<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-
(c) The GRASP Project, Glasgow University, 1994-1998

Wired-in knowledge about {\em non-primitive} types
-}</span><span>
</span><span id="line-6"></span><span>
</span><span id="line-7"></span><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-8"></span><span class="hs-pragma">{-# LANGUAGE OverloadedStrings #-}</span><span>
</span><span id="line-9"></span><span>
</span><span id="line-10"></span><span class="hs-pragma">{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}</span><span>
</span><span id="line-11"></span><span>
</span><span id="line-12"></span><span class="hs-comment">-- | This module is about types that can be defined in Haskell, but which</span><span>
</span><span id="line-13"></span><span class="hs-comment">--   must be wired into the compiler nonetheless.  C.f module &quot;GHC.Builtin.Types.Prim&quot;</span><span>
</span><span id="line-14"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Builtin.Types</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-15"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Helper functions defined here</span></span><span>
</span><span id="line-16"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier">mkWiredInTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-comment">-- This is used in GHC.Builtin.Types.Literals to define the</span><span>
</span><span id="line-17"></span><span>                            </span><span class="hs-comment">-- built-in functions for evaluation.</span><span>
</span><span id="line-18"></span><span>
</span><span id="line-19"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#mkWiredInIdName"><span class="hs-identifier">mkWiredInIdName</span></a></span><span class="hs-special">,</span><span>    </span><span class="hs-comment">-- used in GHC.Types.Id.Make</span><span>
</span><span id="line-20"></span><span>
</span><span id="line-21"></span><span>        </span><span class="annot"><span class="hs-comment">-- * All wired in things</span></span><span>
</span><span id="line-22"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#wiredInTyCons"><span class="hs-identifier">wiredInTyCons</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#isBuiltInOcc_maybe"><span class="hs-identifier">isBuiltInOcc_maybe</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-23"></span><span>
</span><span id="line-24"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Bool</span></span><span>
</span><span id="line-25"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#boolTy"><span class="hs-identifier">boolTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#boolTyCon"><span class="hs-identifier">boolTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#boolTyCon_RDR"><span class="hs-identifier">boolTyCon_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#boolTyConName"><span class="hs-identifier">boolTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-26"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#trueDataCon"><span class="hs-identifier">trueDataCon</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#trueDataConId"><span class="hs-identifier">trueDataConId</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#true_RDR"><span class="hs-identifier">true_RDR</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-27"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#falseDataCon"><span class="hs-identifier">falseDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#falseDataConId"><span class="hs-identifier">falseDataConId</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#false_RDR"><span class="hs-identifier">false_RDR</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-28"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedFalseDataCon"><span class="hs-identifier">promotedFalseDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedTrueDataCon"><span class="hs-identifier">promotedTrueDataCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-29"></span><span>
</span><span id="line-30"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Ordering</span></span><span>
</span><span id="line-31"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#orderingTyCon"><span class="hs-identifier">orderingTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-32"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#ordLTDataCon"><span class="hs-identifier">ordLTDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#ordLTDataConId"><span class="hs-identifier">ordLTDataConId</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-33"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#ordEQDataCon"><span class="hs-identifier">ordEQDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#ordEQDataConId"><span class="hs-identifier">ordEQDataConId</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-34"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#ordGTDataCon"><span class="hs-identifier">ordGTDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#ordGTDataConId"><span class="hs-identifier">ordGTDataConId</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-35"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedLTDataCon"><span class="hs-identifier">promotedLTDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedEQDataCon"><span class="hs-identifier">promotedEQDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedGTDataCon"><span class="hs-identifier">promotedGTDataCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-36"></span><span>
</span><span id="line-37"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Boxing primitive types</span></span><span>
</span><span id="line-38"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#boxingDataCon_maybe"><span class="hs-identifier">boxingDataCon_maybe</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-39"></span><span>
</span><span id="line-40"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Char</span></span><span>
</span><span id="line-41"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#charTyCon"><span class="hs-identifier">charTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#charDataCon"><span class="hs-identifier">charDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#charTyCon_RDR"><span class="hs-identifier">charTyCon_RDR</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-42"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#charTy"><span class="hs-identifier">charTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#stringTy"><span class="hs-identifier">stringTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#charTyConName"><span class="hs-identifier">charTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#stringTyCon_RDR"><span class="hs-identifier">stringTyCon_RDR</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-43"></span><span>
</span><span id="line-44"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Double</span></span><span>
</span><span id="line-45"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleTyCon"><span class="hs-identifier">doubleTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleDataCon"><span class="hs-identifier">doubleDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleTy"><span class="hs-identifier">doubleTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleTyConName"><span class="hs-identifier">doubleTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-46"></span><span>
</span><span id="line-47"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Float</span></span><span>
</span><span id="line-48"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#floatTyCon"><span class="hs-identifier">floatTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#floatDataCon"><span class="hs-identifier">floatDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#floatTy"><span class="hs-identifier">floatTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#floatTyConName"><span class="hs-identifier">floatTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-49"></span><span>
</span><span id="line-50"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Int</span></span><span>
</span><span id="line-51"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#intTyCon"><span class="hs-identifier">intTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#intDataCon"><span class="hs-identifier">intDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#intTyCon_RDR"><span class="hs-identifier">intTyCon_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#intDataCon_RDR"><span class="hs-identifier">intDataCon_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#intTyConName"><span class="hs-identifier">intTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-52"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#intTy"><span class="hs-identifier">intTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-53"></span><span>
</span><span id="line-54"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Word</span></span><span>
</span><span id="line-55"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#wordTyCon"><span class="hs-identifier">wordTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#wordDataCon"><span class="hs-identifier">wordDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#wordTyConName"><span class="hs-identifier">wordTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#wordTy"><span class="hs-identifier">wordTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-56"></span><span>
</span><span id="line-57"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Word8</span></span><span>
</span><span id="line-58"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#word8TyCon"><span class="hs-identifier">word8TyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word8DataCon"><span class="hs-identifier">word8DataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word8TyConName"><span class="hs-identifier">word8TyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word8Ty"><span class="hs-identifier">word8Ty</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-59"></span><span>
</span><span id="line-60"></span><span>        </span><span class="annot"><span class="hs-comment">-- * List</span></span><span>
</span><span id="line-61"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#listTyCon"><span class="hs-identifier">listTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#listTyCon_RDR"><span class="hs-identifier">listTyCon_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#listTyConName"><span class="hs-identifier">listTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Names.html#listTyConKey"><span class="hs-identifier">listTyConKey</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-62"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#nilDataCon"><span class="hs-identifier">nilDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#nilDataConName"><span class="hs-identifier">nilDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Names.html#nilDataConKey"><span class="hs-identifier">nilDataConKey</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-63"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#consDataCon_RDR"><span class="hs-identifier">consDataCon_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#consDataCon"><span class="hs-identifier">consDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#consDataConName"><span class="hs-identifier">consDataConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-64"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedNilDataCon"><span class="hs-identifier">promotedNilDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedConsDataCon"><span class="hs-identifier">promotedConsDataCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-65"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#mkListTy"><span class="hs-identifier">mkListTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#mkPromotedListTy"><span class="hs-identifier">mkPromotedListTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-66"></span><span>
</span><span id="line-67"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Maybe</span></span><span>
</span><span id="line-68"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#maybeTyCon"><span class="hs-identifier">maybeTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#maybeTyConName"><span class="hs-identifier">maybeTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-69"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#nothingDataCon"><span class="hs-identifier">nothingDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#nothingDataConName"><span class="hs-identifier">nothingDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedNothingDataCon"><span class="hs-identifier">promotedNothingDataCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-70"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#justDataCon"><span class="hs-identifier">justDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#justDataConName"><span class="hs-identifier">justDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedJustDataCon"><span class="hs-identifier">promotedJustDataCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-71"></span><span>
</span><span id="line-72"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Tuples</span></span><span>
</span><span id="line-73"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#mkTupleTy"><span class="hs-identifier">mkTupleTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#mkTupleTy1"><span class="hs-identifier">mkTupleTy1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#mkBoxedTupleTy"><span class="hs-identifier">mkBoxedTupleTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#mkTupleStr"><span class="hs-identifier">mkTupleStr</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-74"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier">tupleTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#tupleDataCon"><span class="hs-identifier">tupleDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#tupleTyConName"><span class="hs-identifier">tupleTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#tupleDataConName"><span class="hs-identifier">tupleDataConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-75"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedTupleDataCon"><span class="hs-identifier">promotedTupleDataCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-76"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#unitTyCon"><span class="hs-identifier">unitTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unitDataCon"><span class="hs-identifier">unitDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unitDataConId"><span class="hs-identifier">unitDataConId</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unitTy"><span class="hs-identifier">unitTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unitTyConKey"><span class="hs-identifier">unitTyConKey</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-77"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#pairTyCon"><span class="hs-identifier">pairTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-78"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedUnitTyCon"><span class="hs-identifier">unboxedUnitTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedUnitDataCon"><span class="hs-identifier">unboxedUnitDataCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-79"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedTupleKind"><span class="hs-identifier">unboxedTupleKind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedSumKind"><span class="hs-identifier">unboxedSumKind</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-80"></span><span>
</span><span id="line-81"></span><span>        </span><span class="annot"><span class="hs-comment">-- ** Constraint tuples</span></span><span>
</span><span id="line-82"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#cTupleTyConName"><span class="hs-identifier">cTupleTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#cTupleTyConNames"><span class="hs-identifier">cTupleTyConNames</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#isCTupleTyConName"><span class="hs-identifier">isCTupleTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-83"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#cTupleTyConNameArity_maybe"><span class="hs-identifier">cTupleTyConNameArity_maybe</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-84"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#cTupleDataConName"><span class="hs-identifier">cTupleDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#cTupleDataConNames"><span class="hs-identifier">cTupleDataConNames</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-85"></span><span>
</span><span id="line-86"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Any</span></span><span>
</span><span id="line-87"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#anyTyCon"><span class="hs-identifier">anyTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#anyTy"><span class="hs-identifier">anyTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#anyTypeOfKind"><span class="hs-identifier">anyTypeOfKind</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-88"></span><span>
</span><span id="line-89"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Recovery TyCon</span></span><span>
</span><span id="line-90"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#makeRecoveryTyCon"><span class="hs-identifier">makeRecoveryTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-91"></span><span>
</span><span id="line-92"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Sums</span></span><span>
</span><span id="line-93"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#mkSumTy"><span class="hs-identifier">mkSumTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#sumTyCon"><span class="hs-identifier">sumTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#sumDataCon"><span class="hs-identifier">sumDataCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-94"></span><span>
</span><span id="line-95"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Kinds</span></span><span>
</span><span id="line-96"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#typeNatKindCon"><span class="hs-identifier">typeNatKindCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#typeNatKind"><span class="hs-identifier">typeNatKind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#typeSymbolKindCon"><span class="hs-identifier">typeSymbolKindCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#typeSymbolKind"><span class="hs-identifier">typeSymbolKind</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-97"></span><span>        </span><span class="annot"><a href="GHC.Core.TyCon.html#isLiftedTypeKindTyConName"><span class="hs-identifier">isLiftedTypeKindTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier">liftedTypeKind</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-98"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#typeToTypeKind"><span class="hs-identifier">typeToTypeKind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#constraintKind"><span class="hs-identifier">constraintKind</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-99"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#liftedTypeKindTyCon"><span class="hs-identifier">liftedTypeKindTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#constraintKindTyCon"><span class="hs-identifier">constraintKindTyCon</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#constraintKindTyConName"><span class="hs-identifier">constraintKindTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-100"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#liftedTypeKindTyConName"><span class="hs-identifier">liftedTypeKindTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-101"></span><span>
</span><span id="line-102"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Equality predicates</span></span><span>
</span><span id="line-103"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#heqTyCon"><span class="hs-identifier">heqTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#heqTyConName"><span class="hs-identifier">heqTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#heqClass"><span class="hs-identifier">heqClass</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#heqDataCon"><span class="hs-identifier">heqDataCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-104"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#eqTyCon"><span class="hs-identifier">eqTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#eqTyConName"><span class="hs-identifier">eqTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#eqClass"><span class="hs-identifier">eqClass</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#eqDataCon"><span class="hs-identifier">eqDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#eqTyCon_RDR"><span class="hs-identifier">eqTyCon_RDR</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-105"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#coercibleTyCon"><span class="hs-identifier">coercibleTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#coercibleTyConName"><span class="hs-identifier">coercibleTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#coercibleDataCon"><span class="hs-identifier">coercibleDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#coercibleClass"><span class="hs-identifier">coercibleClass</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-106"></span><span>
</span><span id="line-107"></span><span>        </span><span class="annot"><span class="hs-comment">-- * RuntimeRep and friends</span></span><span>
</span><span id="line-108"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#runtimeRepTyCon"><span class="hs-identifier">runtimeRepTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vecCountTyCon"><span class="hs-identifier">vecCountTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vecElemTyCon"><span class="hs-identifier">vecElemTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-109"></span><span>
</span><span id="line-110"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier">runtimeRepTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#liftedRepTy"><span class="hs-identifier">liftedRepTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#liftedRepDataCon"><span class="hs-identifier">liftedRepDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#liftedRepDataConTyCon"><span class="hs-identifier">liftedRepDataConTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-111"></span><span>
</span><span id="line-112"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#vecRepDataConTyCon"><span class="hs-identifier">vecRepDataConTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#tupleRepDataConTyCon"><span class="hs-identifier">tupleRepDataConTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#sumRepDataConTyCon"><span class="hs-identifier">sumRepDataConTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-113"></span><span>
</span><span id="line-114"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#liftedRepDataConTy"><span class="hs-identifier">liftedRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unliftedRepDataConTy"><span class="hs-identifier">unliftedRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-115"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#intRepDataConTy"><span class="hs-identifier">intRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-116"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#int8RepDataConTy"><span class="hs-identifier">int8RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int16RepDataConTy"><span class="hs-identifier">int16RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int32RepDataConTy"><span class="hs-identifier">int32RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int64RepDataConTy"><span class="hs-identifier">int64RepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-117"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#wordRepDataConTy"><span class="hs-identifier">wordRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-118"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#word8RepDataConTy"><span class="hs-identifier">word8RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word16RepDataConTy"><span class="hs-identifier">word16RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word32RepDataConTy"><span class="hs-identifier">word32RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word64RepDataConTy"><span class="hs-identifier">word64RepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-119"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#addrRepDataConTy"><span class="hs-identifier">addrRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-120"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#floatRepDataConTy"><span class="hs-identifier">floatRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleRepDataConTy"><span class="hs-identifier">doubleRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-121"></span><span>
</span><span id="line-122"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#vec2DataConTy"><span class="hs-identifier">vec2DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec4DataConTy"><span class="hs-identifier">vec4DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec8DataConTy"><span class="hs-identifier">vec8DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec16DataConTy"><span class="hs-identifier">vec16DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec32DataConTy"><span class="hs-identifier">vec32DataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-123"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#vec64DataConTy"><span class="hs-identifier">vec64DataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-124"></span><span>
</span><span id="line-125"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#int8ElemRepDataConTy"><span class="hs-identifier">int8ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int16ElemRepDataConTy"><span class="hs-identifier">int16ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int32ElemRepDataConTy"><span class="hs-identifier">int32ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-126"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#int64ElemRepDataConTy"><span class="hs-identifier">int64ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word8ElemRepDataConTy"><span class="hs-identifier">word8ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word16ElemRepDataConTy"><span class="hs-identifier">word16ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-127"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#word32ElemRepDataConTy"><span class="hs-identifier">word32ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word64ElemRepDataConTy"><span class="hs-identifier">word64ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#floatElemRepDataConTy"><span class="hs-identifier">floatElemRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-128"></span><span>
</span><span id="line-129"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleElemRepDataConTy"><span class="hs-identifier">doubleElemRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-130"></span><span>
</span><span id="line-131"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Multiplicity and friends</span></span><span>
</span><span id="line-132"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#multiplicityTyConName"><span class="hs-identifier">multiplicityTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#oneDataConName"><span class="hs-identifier">oneDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#manyDataConName"><span class="hs-identifier">manyDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#multiplicityTy"><span class="hs-identifier">multiplicityTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-133"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#multiplicityTyCon"><span class="hs-identifier">multiplicityTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#oneDataCon"><span class="hs-identifier">oneDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#manyDataCon"><span class="hs-identifier">manyDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#oneDataConTy"><span class="hs-identifier">oneDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#manyDataConTy"><span class="hs-identifier">manyDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-134"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#oneDataConTyCon"><span class="hs-identifier">oneDataConTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#manyDataConTyCon"><span class="hs-identifier">manyDataConTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-135"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#multMulTyCon"><span class="hs-identifier">multMulTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-136"></span><span>
</span><span id="line-137"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#unrestrictedFunTyCon"><span class="hs-identifier">unrestrictedFunTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unrestrictedFunTyConName"><span class="hs-identifier">unrestrictedFunTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-138"></span><span>
</span><span id="line-139"></span><span>        </span><span class="annot"><span class="hs-comment">-- * Bignum</span></span><span>
</span><span id="line-140"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#integerTy"><span class="hs-identifier">integerTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#integerTyCon"><span class="hs-identifier">integerTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#integerTyConName"><span class="hs-identifier">integerTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-141"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#integerISDataCon"><span class="hs-identifier">integerISDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#integerISDataConName"><span class="hs-identifier">integerISDataConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-142"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#integerIPDataCon"><span class="hs-identifier">integerIPDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#integerIPDataConName"><span class="hs-identifier">integerIPDataConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-143"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#integerINDataCon"><span class="hs-identifier">integerINDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#integerINDataConName"><span class="hs-identifier">integerINDataConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-144"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#naturalTy"><span class="hs-identifier">naturalTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#naturalTyCon"><span class="hs-identifier">naturalTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#naturalTyConName"><span class="hs-identifier">naturalTyConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-145"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#naturalNSDataCon"><span class="hs-identifier">naturalNSDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#naturalNSDataConName"><span class="hs-identifier">naturalNSDataConName</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-146"></span><span>        </span><span class="annot"><a href="GHC.Builtin.Types.html#naturalNBDataCon"><span class="hs-identifier">naturalNBDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#naturalNBDataConName"><span class="hs-identifier">naturalNBDataConName</span></a></span><span>
</span><span id="line-147"></span><span>
</span><span id="line-148"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-152"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-153"></span><span>
</span><span id="line-154"></span><span class="hs-keyword">import</span><span> </span><span class="hs-pragma">{-# SOURCE</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="annot"><a href="GHC.Types.Id.Make.html"><span class="hs-identifier">GHC.Types.Id.Make</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Id.Make.html#mkDataConWorkId"><span class="hs-identifier">mkDataConWorkId</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Id.Make.html#mkDictSelId"><span class="hs-identifier">mkDictSelId</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-155"></span><span>
</span><span id="line-156"></span><span class="hs-comment">-- friends:</span><span>
</span><span id="line-157"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Builtin.Names.html"><span class="hs-identifier">GHC.Builtin.Names</span></a></span><span>
</span><span id="line-158"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html"><span class="hs-identifier">GHC.Builtin.Types.Prim</span></a></span><span>
</span><span id="line-159"></span><span class="hs-keyword">import</span><span> </span><span class="hs-pragma">{-# SOURCE</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="annot"><a href="GHC.Builtin.Uniques.html"><span class="hs-identifier">GHC.Builtin.Uniques</span></a></span><span>
</span><span id="line-160"></span><span>
</span><span id="line-161"></span><span class="hs-comment">-- others:</span><span>
</span><span id="line-162"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Coercion.Axiom.html"><span class="hs-identifier">GHC.Core.Coercion.Axiom</span></a></span><span>
</span><span id="line-163"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Id.html"><span class="hs-identifier">GHC.Types.Id</span></a></span><span>
</span><span id="line-164"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.html"><span class="hs-identifier">GHC.Types.Var</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#VarBndr"><span class="hs-identifier">VarBndr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier">Bndr</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-165"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Settings.Constants.html"><span class="hs-identifier">GHC.Settings.Constants</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Settings.Constants.html#mAX_TUPLE_SIZE"><span class="hs-identifier">mAX_TUPLE_SIZE</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Settings.Constants.html#mAX_CTUPLE_SIZE"><span class="hs-identifier">mAX_CTUPLE_SIZE</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Settings.Constants.html#mAX_SUM_SIZE"><span class="hs-identifier">mAX_SUM_SIZE</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-166"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Unit.Module.html"><span class="hs-identifier">GHC.Unit.Module</span></a></span><span>        </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Unit.Types.html#Module"><span class="hs-identifier">Module</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-167"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Type.html"><span class="hs-identifier">GHC.Core.Type</span></a></span><span>
</span><span id="line-168"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.RepType.html"><span class="hs-identifier">GHC.Types.RepType</span></a></span><span>
</span><span id="line-169"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html"><span class="hs-identifier">GHC.Core.DataCon</span></a></span><span>
</span><span id="line-170"></span><span class="hs-keyword">import</span><span> </span><span class="hs-pragma">{-# SOURCE</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html"><span class="hs-identifier">GHC.Core.ConLike</span></a></span><span>
</span><span id="line-171"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html"><span class="hs-identifier">GHC.Core.TyCon</span></a></span><span>
</span><span id="line-172"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Class.html"><span class="hs-identifier">GHC.Core.Class</span></a></span><span>     </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Core.Class.html#Class"><span class="hs-identifier">Class</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Class.html#mkClass"><span class="hs-identifier">mkClass</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-173"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.Reader.html"><span class="hs-identifier">GHC.Types.Name.Reader</span></a></span><span>
</span><span id="line-174"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.html"><span class="hs-identifier">GHC.Types.Name</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Name</span></span><span>
</span><span id="line-175"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html"><span class="hs-identifier">GHC.Types.Name.Env</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html#NameEnv"><span class="hs-identifier">NameEnv</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html#mkNameEnv"><span class="hs-identifier">mkNameEnv</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html#lookupNameEnv"><span class="hs-identifier">lookupNameEnv</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html#lookupNameEnv_NF"><span class="hs-identifier">lookupNameEnv_NF</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-176"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html"><span class="hs-identifier">GHC.Types.Name.Set</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier">NameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#mkNameSet"><span class="hs-identifier">mkNameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#elemNameSet"><span class="hs-identifier">elemNameSet</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-177"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html"><span class="hs-identifier">GHC.Types.Basic</span></a></span><span>
</span><span id="line-178"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html"><span class="hs-identifier">GHC.Types.ForeignCall</span></a></span><span>
</span><span id="line-179"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html"><span class="hs-identifier">GHC.Types.SrcLoc</span></a></span><span>   </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#noSrcSpan"><span class="hs-identifier">noSrcSpan</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-180"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html"><span class="hs-identifier">GHC.Types.Unique</span></a></span><span>
</span><span id="line-181"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../array/src/Data.Array.html#"><span class="hs-identifier">Data.Array</span></a></span><span>
</span><span id="line-182"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html"><span class="hs-identifier">GHC.Data.FastString</span></a></span><span>
</span><span id="line-183"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-184"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Misc.html"><span class="hs-identifier">GHC.Utils.Misc</span></a></span><span>
</span><span id="line-185"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.BooleanFormula.html"><span class="hs-identifier">GHC.Data.BooleanFormula</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Data.BooleanFormula.html#mkAnd"><span class="hs-identifier">mkAnd</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-186"></span><span>
</span><span id="line-187"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Char8.html#"><span class="hs-identifier">Data.ByteString.Char8</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">BS</span></span><span>
</span><span id="line-188"></span><span>
</span><span id="line-189"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.List.html#"><span class="hs-identifier">Data.List</span></a></span><span>        </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../base/src/Data.OldList.html#elemIndex"><span class="hs-identifier">elemIndex</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-190"></span><span>
</span><span id="line-191"></span><span class="annot"><a href="GHC.Builtin.Types.html#alpha_tyvar"><span class="hs-identifier hs-type">alpha_tyvar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-192"></span><span id="alpha_tyvar"><span class="annot"><span class="annottext">alpha_tyvar :: [TyVar]
</span><a href="GHC.Builtin.Types.html#alpha_tyvar"><span class="hs-identifier hs-var hs-var">alpha_tyvar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#alphaTyVar"><span class="hs-identifier hs-var">alphaTyVar</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-193"></span><span>
</span><span id="line-194"></span><span class="annot"><a href="GHC.Builtin.Types.html#alpha_ty"><span class="hs-identifier hs-type">alpha_ty</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-195"></span><span id="alpha_ty"><span class="annot"><span class="annottext">alpha_ty :: [Type]
</span><a href="GHC.Builtin.Types.html#alpha_ty"><span class="hs-identifier hs-var hs-var">alpha_ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#alphaTy"><span class="hs-identifier hs-var">alphaTy</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-196"></span><span>
</span><span id="line-197"></span><span class="hs-comment">{-
Note [Wiring in RuntimeRep]
~~~~~~~~~~~~~~~~~~~~~~~~~~~
The RuntimeRep type (and friends) in GHC.Types has a bunch of constructors,
making it a pain to wire in. To ease the pain somewhat, we use lists of
the different bits, like Uniques, Names, DataCons. These lists must be
kept in sync with each other. The rule is this: use the order as declared
in GHC.Types. All places where such lists exist should contain a reference
to this Note, so a search for this Note's name should find all the lists.

See also Note [Getting from RuntimeRep to PrimRep] in GHC.Types.RepType.

************************************************************************
*                                                                      *
\subsection{Wired in type constructors}
*                                                                      *
************************************************************************

If you change which things are wired in, make sure you change their
names in GHC.Builtin.Names, so they use wTcQual, wDataQual, etc
-}</span><span>
</span><span id="line-218"></span><span>
</span><span id="line-219"></span><span class="hs-comment">-- This list is used only to define GHC.Builtin.Utils.wiredInThings. That in turn</span><span>
</span><span id="line-220"></span><span class="hs-comment">-- is used to initialise the name environment carried around by the renamer.</span><span>
</span><span id="line-221"></span><span class="hs-comment">-- This means that if we look up the name of a TyCon (or its implicit binders)</span><span>
</span><span id="line-222"></span><span class="hs-comment">-- that occurs in this list that name will be assigned the wired-in key we</span><span>
</span><span id="line-223"></span><span class="hs-comment">-- define here.</span><span>
</span><span id="line-224"></span><span class="hs-comment">--</span><span>
</span><span id="line-225"></span><span class="hs-comment">-- Because of their infinite nature, this list excludes</span><span>
</span><span id="line-226"></span><span class="hs-comment">--   * tuples, including boxed, unboxed and constraint tuples</span><span>
</span><span id="line-227"></span><span class="hs-comment">---       (mkTupleTyCon, unitTyCon, pairTyCon)</span><span>
</span><span id="line-228"></span><span class="hs-comment">--   * unboxed sums (sumTyCon)</span><span>
</span><span id="line-229"></span><span class="hs-comment">-- See Note [Infinite families of known-key names] in GHC.Builtin.Names</span><span>
</span><span id="line-230"></span><span class="hs-comment">--</span><span>
</span><span id="line-231"></span><span class="hs-comment">-- See also Note [Known-key names]</span><span>
</span><span id="line-232"></span><span class="annot"><a href="GHC.Builtin.Types.html#wiredInTyCons"><span class="hs-identifier hs-type">wiredInTyCons</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-233"></span><span>
</span><span id="line-234"></span><span id="wiredInTyCons"><span class="annot"><span class="annottext">wiredInTyCons :: [TyCon]
</span><a href="GHC.Builtin.Types.html#wiredInTyCons"><span class="hs-identifier hs-var hs-var">wiredInTyCons</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="hs-comment">-- Units are not treated like other tuples, because they</span><span>
</span><span id="line-235"></span><span>                  </span><span class="hs-comment">-- are defined in GHC.Base, and there's only a few of them. We</span><span>
</span><span id="line-236"></span><span>                  </span><span class="hs-comment">-- put them in wiredInTyCons so that they will pre-populate</span><span>
</span><span id="line-237"></span><span>                  </span><span class="hs-comment">-- the name cache, so the parser in isBuiltInOcc_maybe doesn't</span><span>
</span><span id="line-238"></span><span>                  </span><span class="hs-comment">-- need to look out for them.</span><span>
</span><span id="line-239"></span><span>                  </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#unitTyCon"><span class="hs-identifier hs-var">unitTyCon</span></a></span><span>
</span><span id="line-240"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#unboxedUnitTyCon"><span class="hs-identifier hs-var">unboxedUnitTyCon</span></a></span><span>
</span><span id="line-241"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#anyTyCon"><span class="hs-identifier hs-var">anyTyCon</span></a></span><span>
</span><span id="line-242"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#boolTyCon"><span class="hs-identifier hs-var">boolTyCon</span></a></span><span>
</span><span id="line-243"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#charTyCon"><span class="hs-identifier hs-var">charTyCon</span></a></span><span>
</span><span id="line-244"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#stringTyCon"><span class="hs-identifier hs-var">stringTyCon</span></a></span><span>
</span><span id="line-245"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#doubleTyCon"><span class="hs-identifier hs-var">doubleTyCon</span></a></span><span>
</span><span id="line-246"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#floatTyCon"><span class="hs-identifier hs-var">floatTyCon</span></a></span><span>
</span><span id="line-247"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#intTyCon"><span class="hs-identifier hs-var">intTyCon</span></a></span><span>
</span><span id="line-248"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#wordTyCon"><span class="hs-identifier hs-var">wordTyCon</span></a></span><span>
</span><span id="line-249"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#word8TyCon"><span class="hs-identifier hs-var">word8TyCon</span></a></span><span>
</span><span id="line-250"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#listTyCon"><span class="hs-identifier hs-var">listTyCon</span></a></span><span>
</span><span id="line-251"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#orderingTyCon"><span class="hs-identifier hs-var">orderingTyCon</span></a></span><span>
</span><span id="line-252"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#maybeTyCon"><span class="hs-identifier hs-var">maybeTyCon</span></a></span><span>
</span><span id="line-253"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#heqTyCon"><span class="hs-identifier hs-var">heqTyCon</span></a></span><span>
</span><span id="line-254"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#eqTyCon"><span class="hs-identifier hs-var">eqTyCon</span></a></span><span>
</span><span id="line-255"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#coercibleTyCon"><span class="hs-identifier hs-var">coercibleTyCon</span></a></span><span>
</span><span id="line-256"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#typeNatKindCon"><span class="hs-identifier hs-var">typeNatKindCon</span></a></span><span>
</span><span id="line-257"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#typeSymbolKindCon"><span class="hs-identifier hs-var">typeSymbolKindCon</span></a></span><span>
</span><span id="line-258"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#runtimeRepTyCon"><span class="hs-identifier hs-var">runtimeRepTyCon</span></a></span><span>
</span><span id="line-259"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#vecCountTyCon"><span class="hs-identifier hs-var">vecCountTyCon</span></a></span><span>
</span><span id="line-260"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#vecElemTyCon"><span class="hs-identifier hs-var">vecElemTyCon</span></a></span><span>
</span><span id="line-261"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#constraintKindTyCon"><span class="hs-identifier hs-var">constraintKindTyCon</span></a></span><span>
</span><span id="line-262"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#liftedTypeKindTyCon"><span class="hs-identifier hs-var">liftedTypeKindTyCon</span></a></span><span>
</span><span id="line-263"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#multiplicityTyCon"><span class="hs-identifier hs-var">multiplicityTyCon</span></a></span><span>
</span><span id="line-264"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#naturalTyCon"><span class="hs-identifier hs-var">naturalTyCon</span></a></span><span>
</span><span id="line-265"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#integerTyCon"><span class="hs-identifier hs-var">integerTyCon</span></a></span><span>
</span><span id="line-266"></span><span>                </span><span class="hs-special">]</span><span>
</span><span id="line-267"></span><span>
</span><span id="line-268"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-type">mkWiredInTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-type">BuiltInSyntax</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Unit.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-269"></span><span id="mkWiredInTyConName"><span class="annot"><span class="annottext">mkWiredInTyConName :: BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var hs-var">mkWiredInTyConName</span></a></span></span><span> </span><span id="local-6989586621680821497"><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="#local-6989586621680821497"><span class="hs-identifier hs-var">built_in</span></a></span></span><span> </span><span id="local-6989586621680821496"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680821496"><span class="hs-identifier hs-var">modu</span></a></span></span><span> </span><span id="local-6989586621680821495"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680821495"><span class="hs-identifier hs-var">fs</span></a></span></span><span> </span><span id="local-6989586621680821494"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821494"><span class="hs-identifier hs-var">unique</span></a></span></span><span> </span><span id="local-6989586621680821493"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821493"><span class="hs-identifier hs-var">tycon</span></a></span></span><span>
</span><span id="line-270"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680821496"><span class="hs-identifier hs-var">modu</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">FastString -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkTcOccFS"><span class="hs-identifier hs-var">mkTcOccFS</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680821495"><span class="hs-identifier hs-var">fs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821494"><span class="hs-identifier hs-var">unique</span></a></span><span>
</span><span id="line-271"></span><span>                  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#ATyCon"><span class="hs-identifier hs-var">ATyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821493"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">)</span><span>        </span><span class="hs-comment">-- Relevant TyCon</span><span>
</span><span id="line-272"></span><span>                  </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="#local-6989586621680821497"><span class="hs-identifier hs-var">built_in</span></a></span><span>
</span><span id="line-273"></span><span>
</span><span id="line-274"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-type">mkWiredInDataConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-type">BuiltInSyntax</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Unit.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-275"></span><span id="mkWiredInDataConName"><span class="annot"><span class="annottext">mkWiredInDataConName :: BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var hs-var">mkWiredInDataConName</span></a></span></span><span> </span><span id="local-6989586621680821488"><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="#local-6989586621680821488"><span class="hs-identifier hs-var">built_in</span></a></span></span><span> </span><span id="local-6989586621680821487"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680821487"><span class="hs-identifier hs-var">modu</span></a></span></span><span> </span><span id="local-6989586621680821486"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680821486"><span class="hs-identifier hs-var">fs</span></a></span></span><span> </span><span id="local-6989586621680821485"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821485"><span class="hs-identifier hs-var">unique</span></a></span></span><span> </span><span id="local-6989586621680821484"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821484"><span class="hs-identifier hs-var">datacon</span></a></span></span><span>
</span><span id="line-276"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680821487"><span class="hs-identifier hs-var">modu</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">FastString -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkDataOccFS"><span class="hs-identifier hs-var">mkDataOccFS</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680821486"><span class="hs-identifier hs-var">fs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821485"><span class="hs-identifier hs-var">unique</span></a></span><span>
</span><span id="line-277"></span><span>                  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ConLike -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#AConLike"><span class="hs-identifier hs-var">AConLike</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; ConLike
</span><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-var">RealDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821484"><span class="hs-identifier hs-var">datacon</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>    </span><span class="hs-comment">-- Relevant DataCon</span><span>
</span><span id="line-278"></span><span>                  </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="#local-6989586621680821488"><span class="hs-identifier hs-var">built_in</span></a></span><span>
</span><span id="line-279"></span><span>
</span><span id="line-280"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkWiredInIdName"><span class="hs-identifier hs-type">mkWiredInIdName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Unit.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-281"></span><span id="mkWiredInIdName"><span class="annot"><span class="annottext">mkWiredInIdName :: Module -&gt; FastString -&gt; Unique -&gt; TyVar -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInIdName"><span class="hs-identifier hs-var hs-var">mkWiredInIdName</span></a></span></span><span> </span><span id="local-6989586621680821479"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680821479"><span class="hs-identifier hs-var">mod</span></a></span></span><span> </span><span id="local-6989586621680821478"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680821478"><span class="hs-identifier hs-var">fs</span></a></span></span><span> </span><span id="local-6989586621680821477"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821477"><span class="hs-identifier hs-var">uniq</span></a></span></span><span> </span><span id="local-6989586621680821476"><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821476"><span class="hs-identifier hs-var">id</span></a></span></span><span>
</span><span id="line-282"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680821479"><span class="hs-identifier hs-var">mod</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NameSpace -&gt; FastString -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkOccNameFS"><span class="hs-identifier hs-var">mkOccNameFS</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="GHC.Types.Name.Occurrence.html#varName"><span class="hs-identifier hs-var">Name.varName</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680821478"><span class="hs-identifier hs-var">fs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821477"><span class="hs-identifier hs-var">uniq</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyVar -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#AnId"><span class="hs-identifier hs-var">AnId</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821476"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span>
</span><span id="line-283"></span><span>
</span><span id="line-284"></span><span class="hs-comment">-- See Note [Kind-changing of (~) and Coercible]</span><span>
</span><span id="line-285"></span><span class="hs-comment">-- in libraries/ghc-prim/GHC/Types.hs</span><span>
</span><span id="line-286"></span><span class="annot"><a href="GHC.Builtin.Types.html#eqTyConName"><span class="hs-identifier hs-type">eqTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#eqDataConName"><span class="hs-identifier hs-type">eqDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#eqSCSelIdName"><span class="hs-identifier hs-type">eqSCSelIdName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-287"></span><span id="eqTyConName"><span class="annot"><span class="annottext">eqTyConName :: Name
</span><a href="GHC.Builtin.Types.html#eqTyConName"><span class="hs-identifier hs-var hs-var">eqTyConName</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;~&quot;</span></span><span class="hs-special">)</span><span>   </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#eqTyConKey"><span class="hs-identifier hs-var">eqTyConKey</span></a></span><span>   </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#eqTyCon"><span class="hs-identifier hs-var">eqTyCon</span></a></span><span>
</span><span id="line-288"></span><span id="eqDataConName"><span class="annot"><span class="annottext">eqDataConName :: Name
</span><a href="GHC.Builtin.Types.html#eqDataConName"><span class="hs-identifier hs-var hs-var">eqDataConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Eq#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#eqDataConKey"><span class="hs-identifier hs-var">eqDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#eqDataCon"><span class="hs-identifier hs-var">eqDataCon</span></a></span><span>
</span><span id="line-289"></span><span id="eqSCSelIdName"><span class="annot"><span class="annottext">eqSCSelIdName :: Name
</span><a href="GHC.Builtin.Types.html#eqSCSelIdName"><span class="hs-identifier hs-var hs-var">eqSCSelIdName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; FastString -&gt; Unique -&gt; TyVar -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInIdName"><span class="hs-identifier hs-var">mkWiredInIdName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;eq_sel&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#eqSCSelIdKey"><span class="hs-identifier hs-var">eqSCSelIdKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.html#eqSCSelId"><span class="hs-identifier hs-var">eqSCSelId</span></a></span><span>
</span><span id="line-290"></span><span>
</span><span id="line-291"></span><span class="hs-comment">{- Note [eqTyCon (~) is built-in syntax]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The (~) type operator used in equality constraints (a~b) is considered built-in
syntax. This has a few consequences:

* The user is not allowed to define their own type constructors with this name:

    ghci&gt; class a ~ b
    &lt;interactive&gt;:1:1: error: Illegal binding of built-in syntax: ~

* Writing (a ~ b) does not require enabling -XTypeOperators. It does, however,
  require -XGADTs or -XTypeFamilies.

* The (~) type operator is always in scope. It doesn't need to be imported,
  and it cannot be hidden.

* We have a bunch of special cases in the compiler to arrange all of the above.

There's no particular reason for (~) to be special, but fixing this would be a
breaking change.
-}</span><span>
</span><span id="line-312"></span><span class="annot"><a href="GHC.Builtin.Types.html#eqTyCon_RDR"><span class="hs-identifier hs-type">eqTyCon_RDR</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Reader.html#RdrName"><span class="hs-identifier hs-type">RdrName</span></a></span><span>
</span><span id="line-313"></span><span id="eqTyCon_RDR"><span class="annot"><span class="annottext">eqTyCon_RDR :: RdrName
</span><a href="GHC.Builtin.Types.html#eqTyCon_RDR"><span class="hs-identifier hs-var hs-var">eqTyCon_RDR</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; RdrName
</span><a href="GHC.Types.Name.Reader.html#nameRdrName"><span class="hs-identifier hs-var">nameRdrName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#eqTyConName"><span class="hs-identifier hs-var">eqTyConName</span></a></span><span>
</span><span id="line-314"></span><span>
</span><span id="line-315"></span><span class="hs-comment">-- See Note [Kind-changing of (~) and Coercible]</span><span>
</span><span id="line-316"></span><span class="hs-comment">-- in libraries/ghc-prim/GHC/Types.hs</span><span>
</span><span id="line-317"></span><span class="annot"><a href="GHC.Builtin.Types.html#heqTyConName"><span class="hs-identifier hs-type">heqTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#heqDataConName"><span class="hs-identifier hs-type">heqDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#heqSCSelIdName"><span class="hs-identifier hs-type">heqSCSelIdName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-318"></span><span id="heqTyConName"><span class="annot"><span class="annottext">heqTyConName :: Name
</span><a href="GHC.Builtin.Types.html#heqTyConName"><span class="hs-identifier hs-var hs-var">heqTyConName</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;~~&quot;</span></span><span class="hs-special">)</span><span>   </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#heqTyConKey"><span class="hs-identifier hs-var">heqTyConKey</span></a></span><span>      </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#heqTyCon"><span class="hs-identifier hs-var">heqTyCon</span></a></span><span>
</span><span id="line-319"></span><span id="heqDataConName"><span class="annot"><span class="annottext">heqDataConName :: Name
</span><a href="GHC.Builtin.Types.html#heqDataConName"><span class="hs-identifier hs-var hs-var">heqDataConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;HEq#&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#heqDataConKey"><span class="hs-identifier hs-var">heqDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#heqDataCon"><span class="hs-identifier hs-var">heqDataCon</span></a></span><span>
</span><span id="line-320"></span><span id="heqSCSelIdName"><span class="annot"><span class="annottext">heqSCSelIdName :: Name
</span><a href="GHC.Builtin.Types.html#heqSCSelIdName"><span class="hs-identifier hs-var hs-var">heqSCSelIdName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; FastString -&gt; Unique -&gt; TyVar -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInIdName"><span class="hs-identifier hs-var">mkWiredInIdName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;heq_sel&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#heqSCSelIdKey"><span class="hs-identifier hs-var">heqSCSelIdKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.html#heqSCSelId"><span class="hs-identifier hs-var">heqSCSelId</span></a></span><span>
</span><span id="line-321"></span><span>
</span><span id="line-322"></span><span class="hs-comment">-- See Note [Kind-changing of (~) and Coercible] in libraries/ghc-prim/GHC/Types.hs</span><span>
</span><span id="line-323"></span><span class="annot"><a href="GHC.Builtin.Types.html#coercibleTyConName"><span class="hs-identifier hs-type">coercibleTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#coercibleDataConName"><span class="hs-identifier hs-type">coercibleDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#coercibleSCSelIdName"><span class="hs-identifier hs-type">coercibleSCSelIdName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-324"></span><span id="coercibleTyConName"><span class="annot"><span class="annottext">coercibleTyConName :: Name
</span><a href="GHC.Builtin.Types.html#coercibleTyConName"><span class="hs-identifier hs-var hs-var">coercibleTyConName</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Coercible&quot;</span></span><span class="hs-special">)</span><span>  </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#coercibleTyConKey"><span class="hs-identifier hs-var">coercibleTyConKey</span></a></span><span>   </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#coercibleTyCon"><span class="hs-identifier hs-var">coercibleTyCon</span></a></span><span>
</span><span id="line-325"></span><span id="coercibleDataConName"><span class="annot"><span class="annottext">coercibleDataConName :: Name
</span><a href="GHC.Builtin.Types.html#coercibleDataConName"><span class="hs-identifier hs-var hs-var">coercibleDataConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;MkCoercible&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#coercibleDataConKey"><span class="hs-identifier hs-var">coercibleDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#coercibleDataCon"><span class="hs-identifier hs-var">coercibleDataCon</span></a></span><span>
</span><span id="line-326"></span><span id="coercibleSCSelIdName"><span class="annot"><span class="annottext">coercibleSCSelIdName :: Name
</span><a href="GHC.Builtin.Types.html#coercibleSCSelIdName"><span class="hs-identifier hs-var hs-var">coercibleSCSelIdName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; FastString -&gt; Unique -&gt; TyVar -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInIdName"><span class="hs-identifier hs-var">mkWiredInIdName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;coercible_sel&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#coercibleSCSelIdKey"><span class="hs-identifier hs-var">coercibleSCSelIdKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.html#coercibleSCSelId"><span class="hs-identifier hs-var">coercibleSCSelId</span></a></span><span>
</span><span id="line-327"></span><span>
</span><span id="line-328"></span><span class="annot"><a href="GHC.Builtin.Types.html#charTyConName"><span class="hs-identifier hs-type">charTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#charDataConName"><span class="hs-identifier hs-type">charDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#intTyConName"><span class="hs-identifier hs-type">intTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#intDataConName"><span class="hs-identifier hs-type">intDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#stringTyConName"><span class="hs-identifier hs-type">stringTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-329"></span><span id="charTyConName"><span class="annot"><span class="annottext">charTyConName :: Name
</span><a href="GHC.Builtin.Types.html#charTyConName"><span class="hs-identifier hs-var hs-var">charTyConName</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Char&quot;</span></span><span class="hs-special">)</span><span>   </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#charTyConKey"><span class="hs-identifier hs-var">charTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#charTyCon"><span class="hs-identifier hs-var">charTyCon</span></a></span><span>
</span><span id="line-330"></span><span id="charDataConName"><span class="annot"><span class="annottext">charDataConName :: Name
</span><a href="GHC.Builtin.Types.html#charDataConName"><span class="hs-identifier hs-var hs-var">charDataConName</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;C#&quot;</span></span><span class="hs-special">)</span><span>     </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#charDataConKey"><span class="hs-identifier hs-var">charDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#charDataCon"><span class="hs-identifier hs-var">charDataCon</span></a></span><span>
</span><span id="line-331"></span><span id="stringTyConName"><span class="annot"><span class="annottext">stringTyConName :: Name
</span><a href="GHC.Builtin.Types.html#stringTyConName"><span class="hs-identifier hs-var hs-var">stringTyConName</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_BASE"><span class="hs-identifier hs-var">gHC_BASE</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;String&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#stringTyConKey"><span class="hs-identifier hs-var">stringTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#stringTyCon"><span class="hs-identifier hs-var">stringTyCon</span></a></span><span>
</span><span id="line-332"></span><span id="intTyConName"><span class="annot"><span class="annottext">intTyConName :: Name
</span><a href="GHC.Builtin.Types.html#intTyConName"><span class="hs-identifier hs-var hs-var">intTyConName</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Int&quot;</span></span><span class="hs-special">)</span><span>    </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#intTyConKey"><span class="hs-identifier hs-var">intTyConKey</span></a></span><span>   </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#intTyCon"><span class="hs-identifier hs-var">intTyCon</span></a></span><span>
</span><span id="line-333"></span><span id="intDataConName"><span class="annot"><span class="annottext">intDataConName :: Name
</span><a href="GHC.Builtin.Types.html#intDataConName"><span class="hs-identifier hs-var hs-var">intDataConName</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;I#&quot;</span></span><span class="hs-special">)</span><span>     </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#intDataConKey"><span class="hs-identifier hs-var">intDataConKey</span></a></span><span>  </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#intDataCon"><span class="hs-identifier hs-var">intDataCon</span></a></span><span>
</span><span id="line-334"></span><span>
</span><span id="line-335"></span><span class="annot"><a href="GHC.Builtin.Types.html#boolTyConName"><span class="hs-identifier hs-type">boolTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#falseDataConName"><span class="hs-identifier hs-type">falseDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#trueDataConName"><span class="hs-identifier hs-type">trueDataConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-336"></span><span id="boolTyConName"><span class="annot"><span class="annottext">boolTyConName :: Name
</span><a href="GHC.Builtin.Types.html#boolTyConName"><span class="hs-identifier hs-var hs-var">boolTyConName</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Bool&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#boolTyConKey"><span class="hs-identifier hs-var">boolTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#boolTyCon"><span class="hs-identifier hs-var">boolTyCon</span></a></span><span>
</span><span id="line-337"></span><span id="falseDataConName"><span class="annot"><span class="annottext">falseDataConName :: Name
</span><a href="GHC.Builtin.Types.html#falseDataConName"><span class="hs-identifier hs-var hs-var">falseDataConName</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;False&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#falseDataConKey"><span class="hs-identifier hs-var">falseDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#falseDataCon"><span class="hs-identifier hs-var">falseDataCon</span></a></span><span>
</span><span id="line-338"></span><span id="trueDataConName"><span class="annot"><span class="annottext">trueDataConName :: Name
</span><a href="GHC.Builtin.Types.html#trueDataConName"><span class="hs-identifier hs-var hs-var">trueDataConName</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;True&quot;</span></span><span class="hs-special">)</span><span>  </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#trueDataConKey"><span class="hs-identifier hs-var">trueDataConKey</span></a></span><span>  </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#trueDataCon"><span class="hs-identifier hs-var">trueDataCon</span></a></span><span>
</span><span id="line-339"></span><span>
</span><span id="line-340"></span><span class="annot"><a href="GHC.Builtin.Types.html#listTyConName"><span class="hs-identifier hs-type">listTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#nilDataConName"><span class="hs-identifier hs-type">nilDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#consDataConName"><span class="hs-identifier hs-type">consDataConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-341"></span><span id="listTyConName"><span class="annot"><span class="annottext">listTyConName :: Name
</span><a href="GHC.Builtin.Types.html#listTyConName"><span class="hs-identifier hs-var hs-var">listTyConName</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;[]&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#listTyConKey"><span class="hs-identifier hs-var">listTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#listTyCon"><span class="hs-identifier hs-var">listTyCon</span></a></span><span>
</span><span id="line-342"></span><span id="nilDataConName"><span class="annot"><span class="annottext">nilDataConName :: Name
</span><a href="GHC.Builtin.Types.html#nilDataConName"><span class="hs-identifier hs-var hs-var">nilDataConName</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;[]&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#nilDataConKey"><span class="hs-identifier hs-var">nilDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#nilDataCon"><span class="hs-identifier hs-var">nilDataCon</span></a></span><span>
</span><span id="line-343"></span><span id="consDataConName"><span class="annot"><span class="annottext">consDataConName :: Name
</span><a href="GHC.Builtin.Types.html#consDataConName"><span class="hs-identifier hs-var hs-var">consDataConName</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;:&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#consDataConKey"><span class="hs-identifier hs-var">consDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#consDataCon"><span class="hs-identifier hs-var">consDataCon</span></a></span><span>
</span><span id="line-344"></span><span>
</span><span id="line-345"></span><span class="annot"><a href="GHC.Builtin.Types.html#maybeTyConName"><span class="hs-identifier hs-type">maybeTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#nothingDataConName"><span class="hs-identifier hs-type">nothingDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#justDataConName"><span class="hs-identifier hs-type">justDataConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-346"></span><span id="maybeTyConName"><span class="annot"><span class="annottext">maybeTyConName :: Name
</span><a href="GHC.Builtin.Types.html#maybeTyConName"><span class="hs-identifier hs-var hs-var">maybeTyConName</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_MAYBE"><span class="hs-identifier hs-var">gHC_MAYBE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Maybe&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-347"></span><span>                                          </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#maybeTyConKey"><span class="hs-identifier hs-var">maybeTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#maybeTyCon"><span class="hs-identifier hs-var">maybeTyCon</span></a></span><span>
</span><span id="line-348"></span><span id="nothingDataConName"><span class="annot"><span class="annottext">nothingDataConName :: Name
</span><a href="GHC.Builtin.Types.html#nothingDataConName"><span class="hs-identifier hs-var hs-var">nothingDataConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_MAYBE"><span class="hs-identifier hs-var">gHC_MAYBE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Nothing&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-349"></span><span>                                          </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#nothingDataConKey"><span class="hs-identifier hs-var">nothingDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#nothingDataCon"><span class="hs-identifier hs-var">nothingDataCon</span></a></span><span>
</span><span id="line-350"></span><span id="justDataConName"><span class="annot"><span class="annottext">justDataConName :: Name
</span><a href="GHC.Builtin.Types.html#justDataConName"><span class="hs-identifier hs-var hs-var">justDataConName</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_MAYBE"><span class="hs-identifier hs-var">gHC_MAYBE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Just&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-351"></span><span>                                          </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#justDataConKey"><span class="hs-identifier hs-var">justDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#justDataCon"><span class="hs-identifier hs-var">justDataCon</span></a></span><span>
</span><span id="line-352"></span><span>
</span><span id="line-353"></span><span class="annot"><a href="GHC.Builtin.Types.html#wordTyConName"><span class="hs-identifier hs-type">wordTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#wordDataConName"><span class="hs-identifier hs-type">wordDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word8TyConName"><span class="hs-identifier hs-type">word8TyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word8DataConName"><span class="hs-identifier hs-type">word8DataConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-354"></span><span id="wordTyConName"><span class="annot"><span class="annottext">wordTyConName :: Name
</span><a href="GHC.Builtin.Types.html#wordTyConName"><span class="hs-identifier hs-var hs-var">wordTyConName</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Word&quot;</span></span><span class="hs-special">)</span><span>   </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#wordTyConKey"><span class="hs-identifier hs-var">wordTyConKey</span></a></span><span>     </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#wordTyCon"><span class="hs-identifier hs-var">wordTyCon</span></a></span><span>
</span><span id="line-355"></span><span id="wordDataConName"><span class="annot"><span class="annottext">wordDataConName :: Name
</span><a href="GHC.Builtin.Types.html#wordDataConName"><span class="hs-identifier hs-var hs-var">wordDataConName</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;W#&quot;</span></span><span class="hs-special">)</span><span>     </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#wordDataConKey"><span class="hs-identifier hs-var">wordDataConKey</span></a></span><span>   </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#wordDataCon"><span class="hs-identifier hs-var">wordDataCon</span></a></span><span>
</span><span id="line-356"></span><span id="word8TyConName"><span class="annot"><span class="annottext">word8TyConName :: Name
</span><a href="GHC.Builtin.Types.html#word8TyConName"><span class="hs-identifier hs-var hs-var">word8TyConName</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_WORD"><span class="hs-identifier hs-var">gHC_WORD</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Word8&quot;</span></span><span class="hs-special">)</span><span>  </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#word8TyConKey"><span class="hs-identifier hs-var">word8TyConKey</span></a></span><span>    </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#word8TyCon"><span class="hs-identifier hs-var">word8TyCon</span></a></span><span>
</span><span id="line-357"></span><span id="word8DataConName"><span class="annot"><span class="annottext">word8DataConName :: Name
</span><a href="GHC.Builtin.Types.html#word8DataConName"><span class="hs-identifier hs-var hs-var">word8DataConName</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_WORD"><span class="hs-identifier hs-var">gHC_WORD</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;W8#&quot;</span></span><span class="hs-special">)</span><span>    </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#word8DataConKey"><span class="hs-identifier hs-var">word8DataConKey</span></a></span><span>  </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#word8DataCon"><span class="hs-identifier hs-var">word8DataCon</span></a></span><span>
</span><span id="line-358"></span><span>
</span><span id="line-359"></span><span class="annot"><a href="GHC.Builtin.Types.html#floatTyConName"><span class="hs-identifier hs-type">floatTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#floatDataConName"><span class="hs-identifier hs-type">floatDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleTyConName"><span class="hs-identifier hs-type">doubleTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleDataConName"><span class="hs-identifier hs-type">doubleDataConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-360"></span><span id="floatTyConName"><span class="annot"><span class="annottext">floatTyConName :: Name
</span><a href="GHC.Builtin.Types.html#floatTyConName"><span class="hs-identifier hs-var hs-var">floatTyConName</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Float&quot;</span></span><span class="hs-special">)</span><span>  </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#floatTyConKey"><span class="hs-identifier hs-var">floatTyConKey</span></a></span><span>    </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#floatTyCon"><span class="hs-identifier hs-var">floatTyCon</span></a></span><span>
</span><span id="line-361"></span><span id="floatDataConName"><span class="annot"><span class="annottext">floatDataConName :: Name
</span><a href="GHC.Builtin.Types.html#floatDataConName"><span class="hs-identifier hs-var hs-var">floatDataConName</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;F#&quot;</span></span><span class="hs-special">)</span><span>     </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#floatDataConKey"><span class="hs-identifier hs-var">floatDataConKey</span></a></span><span>  </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#floatDataCon"><span class="hs-identifier hs-var">floatDataCon</span></a></span><span>
</span><span id="line-362"></span><span id="doubleTyConName"><span class="annot"><span class="annottext">doubleTyConName :: Name
</span><a href="GHC.Builtin.Types.html#doubleTyConName"><span class="hs-identifier hs-var hs-var">doubleTyConName</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>   </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Double&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#doubleTyConKey"><span class="hs-identifier hs-var">doubleTyConKey</span></a></span><span>   </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#doubleTyCon"><span class="hs-identifier hs-var">doubleTyCon</span></a></span><span>
</span><span id="line-363"></span><span id="doubleDataConName"><span class="annot"><span class="annottext">doubleDataConName :: Name
</span><a href="GHC.Builtin.Types.html#doubleDataConName"><span class="hs-identifier hs-var hs-var">doubleDataConName</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;D#&quot;</span></span><span class="hs-special">)</span><span>     </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#doubleDataConKey"><span class="hs-identifier hs-var">doubleDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#doubleDataCon"><span class="hs-identifier hs-var">doubleDataCon</span></a></span><span>
</span><span id="line-364"></span><span>
</span><span id="line-365"></span><span class="hs-comment">-- Any</span><span>
</span><span id="line-366"></span><span>
</span><span id="line-367"></span><span class="hs-comment">{-
Note [Any types]
~~~~~~~~~~~~~~~~
The type constructor Any,

    type family Any :: k where { }

It has these properties:

  * Note that 'Any' is kind polymorphic since in some program we may
    need to use Any to fill in a type variable of some kind other than *
    (see #959 for examples).  Its kind is thus `forall k. k``.

  * It is defined in module GHC.Types, and exported so that it is
    available to users.  For this reason it's treated like any other
    wired-in type:
      - has a fixed unique, anyTyConKey,
      - lives in the global name cache

  * It is a *closed* type family, with no instances.  This means that
    if   ty :: '(k1, k2)  we add a given coercion
             g :: ty ~ (Fst ty, Snd ty)
    If Any was a *data* type, then we'd get inconsistency because 'ty'
    could be (Any '(k1,k2)) and then we'd have an equality with Any on
    one side and '(,) on the other. See also #9097 and #9636.

  * When instantiated at a lifted type it is inhabited by at least one value,
    namely bottom

  * You can safely coerce any /lifted/ type to Any, and back with unsafeCoerce.

  * It does not claim to be a *data* type, and that's important for
    the code generator, because the code gen may *enter* a data value
    but never enters a function value.

  * It is wired-in so we can easily refer to it where we don't have a name
    environment (e.g. see Rules.matchRule for one example)

  * If (Any k) is the type of a value, it must be a /lifted/ value. So
    if we have (Any @(TYPE rr)) then rr must be 'LiftedRep.  See
    Note [TYPE and RuntimeRep] in GHC.Builtin.Types.Prim.  This is a convenient
    invariant, and makes isUnliftedTyCon well-defined; otherwise what
    would (isUnliftedTyCon Any) be?

It's used to instantiate un-constrained type variables after type checking. For
example, 'length' has type

  length :: forall a. [a] -&gt; Int

and the list datacon for the empty list has type

  [] :: forall a. [a]

In order to compose these two terms as @length []@ a type
application is required, but there is no constraint on the
choice.  In this situation GHC uses 'Any',

&gt; length (Any *) ([] (Any *))

Above, we print kinds explicitly, as if with --fprint-explicit-kinds.

The Any tycon used to be quite magic, but we have since been able to
implement it merely with an empty kind polymorphic type family. See #10886 for a
bit of history.
-}</span><span>
</span><span id="line-432"></span><span>
</span><span id="line-433"></span><span>
</span><span id="line-434"></span><span class="annot"><a href="GHC.Builtin.Types.html#anyTyConName"><span class="hs-identifier hs-type">anyTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-435"></span><span id="anyTyConName"><span class="annot"><span class="annottext">anyTyConName :: Name
</span><a href="GHC.Builtin.Types.html#anyTyConName"><span class="hs-identifier hs-var hs-var">anyTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-436"></span><span>    </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Any&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#anyTyConKey"><span class="hs-identifier hs-var">anyTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#anyTyCon"><span class="hs-identifier hs-var">anyTyCon</span></a></span><span>
</span><span id="line-437"></span><span>
</span><span id="line-438"></span><span class="annot"><a href="GHC.Builtin.Types.html#anyTyCon"><span class="hs-identifier hs-type">anyTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-439"></span><span id="anyTyCon"><span class="annot"><span class="annottext">anyTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#anyTyCon"><span class="hs-identifier hs-var hs-var">anyTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; [TyConBinder]
-&gt; Type
-&gt; Maybe Name
-&gt; FamTyConFlav
-&gt; Maybe Class
-&gt; Injectivity
-&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkFamilyTyCon"><span class="hs-identifier hs-var">mkFamilyTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#anyTyConName"><span class="hs-identifier hs-var">anyTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821414"><span class="hs-identifier hs-var">binders</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821413"><span class="hs-identifier hs-var">res_kind</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Name
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-440"></span><span>                         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe (CoAxiom Branched) -&gt; FamTyConFlav
</span><a href="GHC.Core.TyCon.html#ClosedSynFamilyTyCon"><span class="hs-identifier hs-var">ClosedSynFamilyTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe (CoAxiom Branched)
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-441"></span><span>                         </span><span class="annot"><span class="annottext">Maybe Class
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-442"></span><span>                         </span><span class="annot"><span class="annottext">Injectivity
</span><a href="GHC.Core.TyCon.html#NotInjective"><span class="hs-identifier hs-var">NotInjective</span></a></span><span>
</span><span id="line-443"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-444"></span><span>    </span><span id="local-6989586621680821414"><span class="annot"><span class="annottext">binders :: [TyConBinder]
</span><a href="#local-6989586621680821414"><span class="hs-identifier hs-var">binders</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">[</span><span id="local-6989586621680821410"><span class="annot"><span class="annottext">TyConBinder
</span><a href="#local-6989586621680821410"><span class="hs-identifier hs-var">kv</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindTyConBinders"><span class="hs-identifier hs-var">mkTemplateKindTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-445"></span><span>    </span><span id="local-6989586621680821413"><span class="annot"><span class="annottext">res_kind :: Type
</span><a href="#local-6989586621680821413"><span class="hs-identifier hs-var hs-var">res_kind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyVar -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTy"><span class="hs-identifier hs-var">mkTyVarTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyConBinder -&gt; TyVar
forall tv argf. VarBndr tv argf -&gt; tv
</span><a href="GHC.Types.Var.html#binderVar"><span class="hs-identifier hs-var">binderVar</span></a></span><span> </span><span class="annot"><span class="annottext">TyConBinder
</span><a href="#local-6989586621680821410"><span class="hs-identifier hs-var">kv</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-446"></span><span>
</span><span id="line-447"></span><span class="annot"><a href="GHC.Builtin.Types.html#anyTy"><span class="hs-identifier hs-type">anyTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-448"></span><span id="anyTy"><span class="annot"><span class="annottext">anyTy :: Type
</span><a href="GHC.Builtin.Types.html#anyTy"><span class="hs-identifier hs-var hs-var">anyTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#anyTyCon"><span class="hs-identifier hs-var">anyTyCon</span></a></span><span>
</span><span id="line-449"></span><span>
</span><span id="line-450"></span><span class="annot"><a href="GHC.Builtin.Types.html#anyTypeOfKind"><span class="hs-identifier hs-type">anyTypeOfKind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-451"></span><span id="anyTypeOfKind"><span class="annot"><span class="annottext">anyTypeOfKind :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.html#anyTypeOfKind"><span class="hs-identifier hs-var hs-var">anyTypeOfKind</span></a></span></span><span> </span><span id="local-6989586621680821404"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821404"><span class="hs-identifier hs-var">kind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#anyTyCon"><span class="hs-identifier hs-var">anyTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821404"><span class="hs-identifier hs-var">kind</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-452"></span><span>
</span><span id="line-453"></span><span class="hs-comment">-- | Make a fake, recovery 'TyCon' from an existing one.</span><span>
</span><span id="line-454"></span><span class="hs-comment">-- Used when recovering from errors in type declarations</span><span>
</span><span id="line-455"></span><span class="annot"><a href="GHC.Builtin.Types.html#makeRecoveryTyCon"><span class="hs-identifier hs-type">makeRecoveryTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-456"></span><span id="makeRecoveryTyCon"><span class="annot"><span class="annottext">makeRecoveryTyCon :: TyCon -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#makeRecoveryTyCon"><span class="hs-identifier hs-var hs-var">makeRecoveryTyCon</span></a></span></span><span> </span><span id="local-6989586621680821402"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821402"><span class="hs-identifier hs-var">tc</span></a></span></span><span>
</span><span id="line-457"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; [TyConBinder]
-&gt; Type
-&gt; [(Name, TyVar)]
-&gt; Bool
-&gt; TyConFlavour
-&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkTcTyCon"><span class="hs-identifier hs-var">mkTcTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; Name
</span><a href="GHC.Core.TyCon.html#tyConName"><span class="hs-identifier hs-var hs-var">tyConName</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821402"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-458"></span><span>              </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821399"><span class="hs-identifier hs-var">bndrs</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821398"><span class="hs-identifier hs-var">res_kind</span></a></span><span>
</span><span id="line-459"></span><span>              </span><span class="annot"><span class="annottext">[(Name, TyVar)]
</span><a href="GHC.Core.TyCon.html#noTcTyConScopedTyVars"><span class="hs-identifier hs-var">noTcTyConScopedTyVars</span></a></span><span>
</span><span id="line-460"></span><span>              </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>             </span><span class="hs-comment">-- Fully generalised</span><span>
</span><span id="line-461"></span><span>              </span><span class="annot"><span class="annottext">TyConFlavour
</span><a href="#local-6989586621680821396"><span class="hs-identifier hs-var">flavour</span></a></span><span>          </span><span class="hs-comment">-- Keep old flavour</span><span>
</span><span id="line-462"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-463"></span><span>    </span><span id="local-6989586621680821396"><span class="annot"><span class="annottext">flavour :: TyConFlavour
</span><a href="#local-6989586621680821396"><span class="hs-identifier hs-var hs-var">flavour</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; TyConFlavour
</span><a href="GHC.Core.TyCon.html#tyConFlavour"><span class="hs-identifier hs-var">tyConFlavour</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821402"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-464"></span><span>    </span><span class="hs-special">[</span><span id="local-6989586621680821394"><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821394"><span class="hs-identifier hs-var">kv</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyVar]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateKindVars"><span class="hs-identifier hs-var">mkTemplateKindVars</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-465"></span><span>    </span><span class="hs-special">(</span><span id="local-6989586621680821399"><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821399"><span class="hs-identifier hs-var">bndrs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680821398"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821398"><span class="hs-identifier hs-var">res_kind</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-466"></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">TyConFlavour
</span><a href="#local-6989586621680821396"><span class="hs-identifier hs-var">flavour</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-467"></span><span>           </span><span class="annot"><span class="annottext">TyConFlavour
</span><a href="GHC.Core.TyCon.html#PromotedDataConFlavour"><span class="hs-identifier hs-var">PromotedDataConFlavour</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">ArgFlag -&gt; TyVar -&gt; TyConBinder
</span><a href="GHC.Core.TyCon.html#mkNamedTyConBinder"><span class="hs-identifier hs-var">mkNamedTyConBinder</span></a></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="GHC.Types.Var.html#Inferred"><span class="hs-identifier hs-var">Inferred</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821394"><span class="hs-identifier hs-var">kv</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyVar -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTy"><span class="hs-identifier hs-var">mkTyVarTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821394"><span class="hs-identifier hs-var">kv</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-468"></span><span>           </span><span class="annot"><span class="annottext">TyConFlavour
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; [TyConBinder]
</span><a href="GHC.Core.TyCon.html#tyConBinders"><span class="hs-identifier hs-var hs-var">tyConBinders</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821402"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCon.html#tyConResKind"><span class="hs-identifier hs-var hs-var">tyConResKind</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821402"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-469"></span><span>        </span><span class="hs-comment">-- For data types we have already validated their kind, so it</span><span>
</span><span id="line-470"></span><span>        </span><span class="hs-comment">-- makes sense to keep it. For promoted data constructors we haven't,</span><span>
</span><span id="line-471"></span><span>        </span><span class="hs-comment">-- so we recover with kind (forall k. k).  Otherwise consider</span><span>
</span><span id="line-472"></span><span>        </span><span class="hs-comment">--     data T a where { MkT :: Show a =&gt; T a }</span><span>
</span><span id="line-473"></span><span>        </span><span class="hs-comment">-- If T is for some reason invalid, we don't want to fall over</span><span>
</span><span id="line-474"></span><span>        </span><span class="hs-comment">-- at (promoted) use-sites of MkT.</span><span>
</span><span id="line-475"></span><span>
</span><span id="line-476"></span><span class="hs-comment">-- Kinds</span><span>
</span><span id="line-477"></span><span class="annot"><a href="GHC.Builtin.Types.html#typeNatKindConName"><span class="hs-identifier hs-type">typeNatKindConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#typeSymbolKindConName"><span class="hs-identifier hs-type">typeSymbolKindConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-478"></span><span id="typeNatKindConName"><span class="annot"><span class="annottext">typeNatKindConName :: Name
</span><a href="GHC.Builtin.Types.html#typeNatKindConName"><span class="hs-identifier hs-var hs-var">typeNatKindConName</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Nat&quot;</span></span><span class="hs-special">)</span><span>    </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#typeNatKindConNameKey"><span class="hs-identifier hs-var">typeNatKindConNameKey</span></a></span><span>    </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#typeNatKindCon"><span class="hs-identifier hs-var">typeNatKindCon</span></a></span><span>
</span><span id="line-479"></span><span id="typeSymbolKindConName"><span class="annot"><span class="annottext">typeSymbolKindConName :: Name
</span><a href="GHC.Builtin.Types.html#typeSymbolKindConName"><span class="hs-identifier hs-var hs-var">typeSymbolKindConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Symbol&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#typeSymbolKindConNameKey"><span class="hs-identifier hs-var">typeSymbolKindConNameKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#typeSymbolKindCon"><span class="hs-identifier hs-var">typeSymbolKindCon</span></a></span><span>
</span><span id="line-480"></span><span>
</span><span id="line-481"></span><span class="annot"><a href="GHC.Builtin.Types.html#constraintKindTyConName"><span class="hs-identifier hs-type">constraintKindTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-482"></span><span id="constraintKindTyConName"><span class="annot"><span class="annottext">constraintKindTyConName :: Name
</span><a href="GHC.Builtin.Types.html#constraintKindTyConName"><span class="hs-identifier hs-var hs-var">constraintKindTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Constraint&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#constraintKindTyConKey"><span class="hs-identifier hs-var">constraintKindTyConKey</span></a></span><span>   </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#constraintKindTyCon"><span class="hs-identifier hs-var">constraintKindTyCon</span></a></span><span>
</span><span id="line-483"></span><span>
</span><span id="line-484"></span><span class="annot"><a href="GHC.Builtin.Types.html#liftedTypeKindTyConName"><span class="hs-identifier hs-type">liftedTypeKindTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-485"></span><span id="liftedTypeKindTyConName"><span class="annot"><span class="annottext">liftedTypeKindTyConName :: Name
</span><a href="GHC.Builtin.Types.html#liftedTypeKindTyConName"><span class="hs-identifier hs-var hs-var">liftedTypeKindTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Type&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#liftedTypeKindTyConKey"><span class="hs-identifier hs-var">liftedTypeKindTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#liftedTypeKindTyCon"><span class="hs-identifier hs-var">liftedTypeKindTyCon</span></a></span><span>
</span><span id="line-486"></span><span>
</span><span id="line-487"></span><span class="annot"><a href="GHC.Builtin.Types.html#multiplicityTyConName"><span class="hs-identifier hs-type">multiplicityTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-488"></span><span id="multiplicityTyConName"><span class="annot"><span class="annottext">multiplicityTyConName :: Name
</span><a href="GHC.Builtin.Types.html#multiplicityTyConName"><span class="hs-identifier hs-var hs-var">multiplicityTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Multiplicity&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-489"></span><span>                          </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#multiplicityTyConKey"><span class="hs-identifier hs-var">multiplicityTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#multiplicityTyCon"><span class="hs-identifier hs-var">multiplicityTyCon</span></a></span><span>
</span><span id="line-490"></span><span>
</span><span id="line-491"></span><span class="annot"><a href="GHC.Builtin.Types.html#oneDataConName"><span class="hs-identifier hs-type">oneDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#manyDataConName"><span class="hs-identifier hs-type">manyDataConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-492"></span><span id="oneDataConName"><span class="annot"><span class="annottext">oneDataConName :: Name
</span><a href="GHC.Builtin.Types.html#oneDataConName"><span class="hs-identifier hs-var hs-var">oneDataConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;One&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#oneDataConKey"><span class="hs-identifier hs-var">oneDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#oneDataCon"><span class="hs-identifier hs-var">oneDataCon</span></a></span><span>
</span><span id="line-493"></span><span id="manyDataConName"><span class="annot"><span class="annottext">manyDataConName :: Name
</span><a href="GHC.Builtin.Types.html#manyDataConName"><span class="hs-identifier hs-var hs-var">manyDataConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Many&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#manyDataConKey"><span class="hs-identifier hs-var">manyDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#manyDataCon"><span class="hs-identifier hs-var">manyDataCon</span></a></span><span>
</span><span id="line-494"></span><span> </span><span class="hs-comment">-- It feels wrong to have One and Many be BuiltInSyntax. But otherwise,</span><span>
</span><span id="line-495"></span><span> </span><span class="hs-comment">-- `Many`, in particular, is considered out of scope unless an appropriate</span><span>
</span><span id="line-496"></span><span> </span><span class="hs-comment">-- file is open. The problem with this is that `Many` appears implicitly in</span><span>
</span><span id="line-497"></span><span> </span><span class="hs-comment">-- types every time there is an `(-&gt;)`, hence out-of-scope errors get</span><span>
</span><span id="line-498"></span><span> </span><span class="hs-comment">-- reported. Making them built-in make it so that they are always considered in</span><span>
</span><span id="line-499"></span><span> </span><span class="hs-comment">-- scope.</span><span>
</span><span id="line-500"></span><span>
</span><span id="line-501"></span><span class="annot"><a href="GHC.Builtin.Types.html#runtimeRepTyConName"><span class="hs-identifier hs-type">runtimeRepTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vecRepDataConName"><span class="hs-identifier hs-type">vecRepDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#tupleRepDataConName"><span class="hs-identifier hs-type">tupleRepDataConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#sumRepDataConName"><span class="hs-identifier hs-type">sumRepDataConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-502"></span><span id="runtimeRepTyConName"><span class="annot"><span class="annottext">runtimeRepTyConName :: Name
</span><a href="GHC.Builtin.Types.html#runtimeRepTyConName"><span class="hs-identifier hs-var hs-var">runtimeRepTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;RuntimeRep&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#runtimeRepTyConKey"><span class="hs-identifier hs-var">runtimeRepTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#runtimeRepTyCon"><span class="hs-identifier hs-var">runtimeRepTyCon</span></a></span><span>
</span><span id="line-503"></span><span id="vecRepDataConName"><span class="annot"><span class="annottext">vecRepDataConName :: Name
</span><a href="GHC.Builtin.Types.html#vecRepDataConName"><span class="hs-identifier hs-var hs-var">vecRepDataConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;VecRep&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#vecRepDataConKey"><span class="hs-identifier hs-var">vecRepDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#vecRepDataCon"><span class="hs-identifier hs-var">vecRepDataCon</span></a></span><span>
</span><span id="line-504"></span><span id="tupleRepDataConName"><span class="annot"><span class="annottext">tupleRepDataConName :: Name
</span><a href="GHC.Builtin.Types.html#tupleRepDataConName"><span class="hs-identifier hs-var hs-var">tupleRepDataConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;TupleRep&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#tupleRepDataConKey"><span class="hs-identifier hs-var">tupleRepDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#tupleRepDataCon"><span class="hs-identifier hs-var">tupleRepDataCon</span></a></span><span>
</span><span id="line-505"></span><span id="sumRepDataConName"><span class="annot"><span class="annottext">sumRepDataConName :: Name
</span><a href="GHC.Builtin.Types.html#sumRepDataConName"><span class="hs-identifier hs-var hs-var">sumRepDataConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;SumRep&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#sumRepDataConKey"><span class="hs-identifier hs-var">sumRepDataConKey</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#sumRepDataCon"><span class="hs-identifier hs-var">sumRepDataCon</span></a></span><span>
</span><span id="line-506"></span><span>
</span><span id="line-507"></span><span class="hs-comment">-- See Note [Wiring in RuntimeRep]</span><span>
</span><span id="line-508"></span><span class="annot"><a href="GHC.Builtin.Types.html#runtimeRepSimpleDataConNames"><span class="hs-identifier hs-type">runtimeRepSimpleDataConNames</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-509"></span><span id="runtimeRepSimpleDataConNames"><span class="annot"><span class="annottext">runtimeRepSimpleDataConNames :: [Name]
</span><a href="GHC.Builtin.Types.html#runtimeRepSimpleDataConNames"><span class="hs-identifier hs-var hs-var">runtimeRepSimpleDataConNames</span></a></span></span><span>
</span><span id="line-510"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(FastString -&gt; Unique -&gt; DataCon -&gt; Name)
-&gt; [FastString] -&gt; [Unique] -&gt; [DataCon] -&gt; [Name]
forall a b c d. (a -&gt; b -&gt; c -&gt; d) -&gt; [a] -&gt; [b] -&gt; [c] -&gt; [d]
</span><a href="GHC.Utils.Misc.html#zipWith3Lazy"><span class="hs-identifier hs-var">zipWith3Lazy</span></a></span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mk_special_dc_name"><span class="hs-identifier hs-var">mk_special_dc_name</span></a></span><span>
</span><span id="line-511"></span><span>      </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;LiftedRep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;UnliftedRep&quot;</span></span><span>
</span><span id="line-512"></span><span>      </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;IntRep&quot;</span></span><span>
</span><span id="line-513"></span><span>      </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Int8Rep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Int16Rep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Int32Rep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Int64Rep&quot;</span></span><span>
</span><span id="line-514"></span><span>      </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;WordRep&quot;</span></span><span>
</span><span id="line-515"></span><span>      </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Word8Rep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Word16Rep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Word32Rep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Word64Rep&quot;</span></span><span>
</span><span id="line-516"></span><span>      </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;AddrRep&quot;</span></span><span>
</span><span id="line-517"></span><span>      </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;FloatRep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;DoubleRep&quot;</span></span><span>
</span><span id="line-518"></span><span>      </span><span class="hs-special">]</span><span>
</span><span id="line-519"></span><span>      </span><span class="annot"><span class="annottext">[Unique]
</span><a href="GHC.Builtin.Names.html#runtimeRepSimpleDataConKeys"><span class="hs-identifier hs-var">runtimeRepSimpleDataConKeys</span></a></span><span>
</span><span id="line-520"></span><span>      </span><span class="annot"><span class="annottext">[DataCon]
</span><a href="GHC.Builtin.Types.html#runtimeRepSimpleDataCons"><span class="hs-identifier hs-var">runtimeRepSimpleDataCons</span></a></span><span>
</span><span id="line-521"></span><span>
</span><span id="line-522"></span><span class="annot"><a href="GHC.Builtin.Types.html#vecCountTyConName"><span class="hs-identifier hs-type">vecCountTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-523"></span><span id="vecCountTyConName"><span class="annot"><span class="annottext">vecCountTyConName :: Name
</span><a href="GHC.Builtin.Types.html#vecCountTyConName"><span class="hs-identifier hs-var hs-var">vecCountTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;VecCount&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#vecCountTyConKey"><span class="hs-identifier hs-var">vecCountTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#vecCountTyCon"><span class="hs-identifier hs-var">vecCountTyCon</span></a></span><span>
</span><span id="line-524"></span><span>
</span><span id="line-525"></span><span class="hs-comment">-- See Note [Wiring in RuntimeRep]</span><span>
</span><span id="line-526"></span><span class="annot"><a href="GHC.Builtin.Types.html#vecCountDataConNames"><span class="hs-identifier hs-type">vecCountDataConNames</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-527"></span><span id="vecCountDataConNames"><span class="annot"><span class="annottext">vecCountDataConNames :: [Name]
</span><a href="GHC.Builtin.Types.html#vecCountDataConNames"><span class="hs-identifier hs-var hs-var">vecCountDataConNames</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(FastString -&gt; Unique -&gt; DataCon -&gt; Name)
-&gt; [FastString] -&gt; [Unique] -&gt; [DataCon] -&gt; [Name]
forall a b c d. (a -&gt; b -&gt; c -&gt; d) -&gt; [a] -&gt; [b] -&gt; [c] -&gt; [d]
</span><a href="GHC.Utils.Misc.html#zipWith3Lazy"><span class="hs-identifier hs-var">zipWith3Lazy</span></a></span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mk_special_dc_name"><span class="hs-identifier hs-var">mk_special_dc_name</span></a></span><span>
</span><span id="line-528"></span><span>                         </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Vec2&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Vec4&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Vec8&quot;</span></span><span>
</span><span id="line-529"></span><span>                         </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Vec16&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Vec32&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Vec64&quot;</span></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-530"></span><span>                         </span><span class="annot"><span class="annottext">[Unique]
</span><a href="GHC.Builtin.Names.html#vecCountDataConKeys"><span class="hs-identifier hs-var">vecCountDataConKeys</span></a></span><span>
</span><span id="line-531"></span><span>                         </span><span class="annot"><span class="annottext">[DataCon]
</span><a href="GHC.Builtin.Types.html#vecCountDataCons"><span class="hs-identifier hs-var">vecCountDataCons</span></a></span><span>
</span><span id="line-532"></span><span>
</span><span id="line-533"></span><span class="annot"><a href="GHC.Builtin.Types.html#vecElemTyConName"><span class="hs-identifier hs-type">vecElemTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-534"></span><span id="vecElemTyConName"><span class="annot"><span class="annottext">vecElemTyConName :: Name
</span><a href="GHC.Builtin.Types.html#vecElemTyConName"><span class="hs-identifier hs-var hs-var">vecElemTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;VecElem&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#vecElemTyConKey"><span class="hs-identifier hs-var">vecElemTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#vecElemTyCon"><span class="hs-identifier hs-var">vecElemTyCon</span></a></span><span>
</span><span id="line-535"></span><span>
</span><span id="line-536"></span><span class="hs-comment">-- See Note [Wiring in RuntimeRep]</span><span>
</span><span id="line-537"></span><span class="annot"><a href="GHC.Builtin.Types.html#vecElemDataConNames"><span class="hs-identifier hs-type">vecElemDataConNames</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-538"></span><span id="vecElemDataConNames"><span class="annot"><span class="annottext">vecElemDataConNames :: [Name]
</span><a href="GHC.Builtin.Types.html#vecElemDataConNames"><span class="hs-identifier hs-var hs-var">vecElemDataConNames</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(FastString -&gt; Unique -&gt; DataCon -&gt; Name)
-&gt; [FastString] -&gt; [Unique] -&gt; [DataCon] -&gt; [Name]
forall a b c d. (a -&gt; b -&gt; c -&gt; d) -&gt; [a] -&gt; [b] -&gt; [c] -&gt; [d]
</span><a href="GHC.Utils.Misc.html#zipWith3Lazy"><span class="hs-identifier hs-var">zipWith3Lazy</span></a></span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mk_special_dc_name"><span class="hs-identifier hs-var">mk_special_dc_name</span></a></span><span>
</span><span id="line-539"></span><span>                        </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Int8ElemRep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Int16ElemRep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Int32ElemRep&quot;</span></span><span>
</span><span id="line-540"></span><span>                        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Int64ElemRep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Word8ElemRep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Word16ElemRep&quot;</span></span><span>
</span><span id="line-541"></span><span>                        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Word32ElemRep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Word64ElemRep&quot;</span></span><span>
</span><span id="line-542"></span><span>                        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;FloatElemRep&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;DoubleElemRep&quot;</span></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-543"></span><span>                        </span><span class="annot"><span class="annottext">[Unique]
</span><a href="GHC.Builtin.Names.html#vecElemDataConKeys"><span class="hs-identifier hs-var">vecElemDataConKeys</span></a></span><span>
</span><span id="line-544"></span><span>                        </span><span class="annot"><span class="annottext">[DataCon]
</span><a href="GHC.Builtin.Types.html#vecElemDataCons"><span class="hs-identifier hs-var">vecElemDataCons</span></a></span><span>
</span><span id="line-545"></span><span>
</span><span id="line-546"></span><span class="annot"><a href="GHC.Builtin.Types.html#mk_special_dc_name"><span class="hs-identifier hs-type">mk_special_dc_name</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-547"></span><span id="mk_special_dc_name"><span class="annot"><span class="annottext">mk_special_dc_name :: FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mk_special_dc_name"><span class="hs-identifier hs-var hs-var">mk_special_dc_name</span></a></span></span><span> </span><span id="local-6989586621680821352"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680821352"><span class="hs-identifier hs-var">fs</span></a></span></span><span> </span><span id="local-6989586621680821351"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821351"><span class="hs-identifier hs-var">u</span></a></span></span><span> </span><span id="local-6989586621680821350"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821350"><span class="hs-identifier hs-var">dc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680821352"><span class="hs-identifier hs-var">fs</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821351"><span class="hs-identifier hs-var">u</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821350"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-548"></span><span>
</span><span id="line-549"></span><span class="annot"><a href="GHC.Builtin.Types.html#boolTyCon_RDR"><span class="hs-identifier hs-type">boolTyCon_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#false_RDR"><span class="hs-identifier hs-type">false_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#true_RDR"><span class="hs-identifier hs-type">true_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#intTyCon_RDR"><span class="hs-identifier hs-type">intTyCon_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#charTyCon_RDR"><span class="hs-identifier hs-type">charTyCon_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#stringTyCon_RDR"><span class="hs-identifier hs-type">stringTyCon_RDR</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-550"></span><span>    </span><span class="annot"><a href="GHC.Builtin.Types.html#intDataCon_RDR"><span class="hs-identifier hs-type">intDataCon_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#listTyCon_RDR"><span class="hs-identifier hs-type">listTyCon_RDR</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#consDataCon_RDR"><span class="hs-identifier hs-type">consDataCon_RDR</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Reader.html#RdrName"><span class="hs-identifier hs-type">RdrName</span></a></span><span>
</span><span id="line-551"></span><span id="boolTyCon_RDR"><span class="annot"><span class="annottext">boolTyCon_RDR :: RdrName
</span><a href="GHC.Builtin.Types.html#boolTyCon_RDR"><span class="hs-identifier hs-var hs-var">boolTyCon_RDR</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; RdrName
</span><a href="GHC.Types.Name.Reader.html#nameRdrName"><span class="hs-identifier hs-var">nameRdrName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#boolTyConName"><span class="hs-identifier hs-var">boolTyConName</span></a></span><span>
</span><span id="line-552"></span><span id="false_RDR"><span class="annot"><span class="annottext">false_RDR :: RdrName
</span><a href="GHC.Builtin.Types.html#false_RDR"><span class="hs-identifier hs-var hs-var">false_RDR</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; RdrName
</span><a href="GHC.Types.Name.Reader.html#nameRdrName"><span class="hs-identifier hs-var">nameRdrName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#falseDataConName"><span class="hs-identifier hs-var">falseDataConName</span></a></span><span>
</span><span id="line-553"></span><span id="true_RDR"><span class="annot"><span class="annottext">true_RDR :: RdrName
</span><a href="GHC.Builtin.Types.html#true_RDR"><span class="hs-identifier hs-var hs-var">true_RDR</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; RdrName
</span><a href="GHC.Types.Name.Reader.html#nameRdrName"><span class="hs-identifier hs-var">nameRdrName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#trueDataConName"><span class="hs-identifier hs-var">trueDataConName</span></a></span><span>
</span><span id="line-554"></span><span id="intTyCon_RDR"><span class="annot"><span class="annottext">intTyCon_RDR :: RdrName
</span><a href="GHC.Builtin.Types.html#intTyCon_RDR"><span class="hs-identifier hs-var hs-var">intTyCon_RDR</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; RdrName
</span><a href="GHC.Types.Name.Reader.html#nameRdrName"><span class="hs-identifier hs-var">nameRdrName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#intTyConName"><span class="hs-identifier hs-var">intTyConName</span></a></span><span>
</span><span id="line-555"></span><span id="charTyCon_RDR"><span class="annot"><span class="annottext">charTyCon_RDR :: RdrName
</span><a href="GHC.Builtin.Types.html#charTyCon_RDR"><span class="hs-identifier hs-var hs-var">charTyCon_RDR</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; RdrName
</span><a href="GHC.Types.Name.Reader.html#nameRdrName"><span class="hs-identifier hs-var">nameRdrName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#charTyConName"><span class="hs-identifier hs-var">charTyConName</span></a></span><span>
</span><span id="line-556"></span><span id="stringTyCon_RDR"><span class="annot"><span class="annottext">stringTyCon_RDR :: RdrName
</span><a href="GHC.Builtin.Types.html#stringTyCon_RDR"><span class="hs-identifier hs-var hs-var">stringTyCon_RDR</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; RdrName
</span><a href="GHC.Types.Name.Reader.html#nameRdrName"><span class="hs-identifier hs-var">nameRdrName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#stringTyConName"><span class="hs-identifier hs-var">stringTyConName</span></a></span><span>
</span><span id="line-557"></span><span id="intDataCon_RDR"><span class="annot"><span class="annottext">intDataCon_RDR :: RdrName
</span><a href="GHC.Builtin.Types.html#intDataCon_RDR"><span class="hs-identifier hs-var hs-var">intDataCon_RDR</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; RdrName
</span><a href="GHC.Types.Name.Reader.html#nameRdrName"><span class="hs-identifier hs-var">nameRdrName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#intDataConName"><span class="hs-identifier hs-var">intDataConName</span></a></span><span>
</span><span id="line-558"></span><span id="listTyCon_RDR"><span class="annot"><span class="annottext">listTyCon_RDR :: RdrName
</span><a href="GHC.Builtin.Types.html#listTyCon_RDR"><span class="hs-identifier hs-var hs-var">listTyCon_RDR</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; RdrName
</span><a href="GHC.Types.Name.Reader.html#nameRdrName"><span class="hs-identifier hs-var">nameRdrName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#listTyConName"><span class="hs-identifier hs-var">listTyConName</span></a></span><span>
</span><span id="line-559"></span><span id="consDataCon_RDR"><span class="annot"><span class="annottext">consDataCon_RDR :: RdrName
</span><a href="GHC.Builtin.Types.html#consDataCon_RDR"><span class="hs-identifier hs-var hs-var">consDataCon_RDR</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; RdrName
</span><a href="GHC.Types.Name.Reader.html#nameRdrName"><span class="hs-identifier hs-var">nameRdrName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#consDataConName"><span class="hs-identifier hs-var">consDataConName</span></a></span><span>
</span><span id="line-560"></span><span>
</span><span id="line-561"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{mkWiredInTyCon}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-568"></span><span>
</span><span id="line-569"></span><span class="hs-comment">-- This function assumes that the types it creates have all parameters at</span><span>
</span><span id="line-570"></span><span class="hs-comment">-- Representational role, and that there is no kind polymorphism.</span><span>
</span><span id="line-571"></span><span class="annot"><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-type">pcTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html#CType"><span class="hs-identifier hs-type">CType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-572"></span><span id="pcTyCon"><span class="annot"><span class="annottext">pcTyCon :: Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var hs-var">pcTyCon</span></a></span></span><span> </span><span id="local-6989586621680821348"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821348"><span class="hs-identifier hs-var">name</span></a></span></span><span> </span><span id="local-6989586621680821347"><span class="annot"><span class="annottext">Maybe CType
</span><a href="#local-6989586621680821347"><span class="hs-identifier hs-var">cType</span></a></span></span><span> </span><span id="local-6989586621680821346"><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821346"><span class="hs-identifier hs-var">tyvars</span></a></span></span><span> </span><span id="local-6989586621680821345"><span class="annot"><span class="annottext">[DataCon]
</span><a href="#local-6989586621680821345"><span class="hs-identifier hs-var">cons</span></a></span></span><span>
</span><span id="line-573"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; [TyConBinder]
-&gt; Type
-&gt; [Role]
-&gt; Maybe CType
-&gt; [Type]
-&gt; AlgTyConRhs
-&gt; AlgTyConFlav
-&gt; Bool
-&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkAlgTyCon"><span class="hs-identifier hs-var">mkAlgTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821348"><span class="hs-identifier hs-var">name</span></a></span><span>
</span><span id="line-574"></span><span>                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AnonArgFlag -&gt; [TyVar] -&gt; [TyConBinder]
</span><a href="GHC.Core.TyCon.html#mkAnonTyConBinders"><span class="hs-identifier hs-var">mkAnonTyConBinders</span></a></span><span> </span><span class="annot"><span class="annottext">AnonArgFlag
</span><a href="GHC.Types.Var.html#VisArg"><span class="hs-identifier hs-var">VisArg</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821346"><span class="hs-identifier hs-var">tyvars</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-575"></span><span>                </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span>
</span><span id="line-576"></span><span>                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(TyVar -&gt; Role) -&gt; [TyVar] -&gt; [Role]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Role -&gt; TyVar -&gt; Role
forall a b. a -&gt; b -&gt; a
</span><a href="../../base/src/GHC.Base.html#const"><span class="hs-identifier hs-var">const</span></a></span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821346"><span class="hs-identifier hs-var">tyvars</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-577"></span><span>                </span><span class="annot"><span class="annottext">Maybe CType
</span><a href="#local-6989586621680821347"><span class="hs-identifier hs-var">cType</span></a></span><span>
</span><span id="line-578"></span><span>                </span><span class="hs-special">[</span><span class="hs-special">]</span><span>              </span><span class="hs-comment">-- No stupid theta</span><span>
</span><span id="line-579"></span><span>                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[DataCon] -&gt; AlgTyConRhs
</span><a href="GHC.Core.TyCon.html#mkDataTyConRhs"><span class="hs-identifier hs-var">mkDataTyConRhs</span></a></span><span> </span><span class="annot"><span class="annottext">[DataCon]
</span><a href="#local-6989586621680821345"><span class="hs-identifier hs-var">cons</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-580"></span><span>                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; AlgTyConFlav
</span><a href="GHC.Core.TyCon.html#VanillaAlgTyCon"><span class="hs-identifier hs-var">VanillaAlgTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; Name
</span><a href="GHC.Core.TyCon.html#mkPrelTyConRepName"><span class="hs-identifier hs-var">mkPrelTyConRepName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821348"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-581"></span><span>                </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>           </span><span class="hs-comment">-- Not in GADT syntax</span><span>
</span><span id="line-582"></span><span>
</span><span id="line-583"></span><span class="annot"><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-type">pcDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-584"></span><span id="pcDataCon"><span class="annot"><span class="annottext">pcDataCon :: Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var hs-var">pcDataCon</span></a></span></span><span> </span><span id="local-6989586621680821335"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821335"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621680821334"><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821334"><span class="hs-identifier hs-var">univs</span></a></span></span><span> </span><span id="local-6989586621680821333"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821333"><span class="hs-identifier hs-var">tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Scaled Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataConW"><span class="hs-identifier hs-var">pcDataConW</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821335"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821334"><span class="hs-identifier hs-var">univs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Type -&gt; Scaled Type) -&gt; [Type] -&gt; [Scaled Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; Scaled Type
forall a. a -&gt; Scaled a
</span><a href="GHC.Core.Type.html#linear"><span class="hs-identifier hs-var">linear</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821333"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-585"></span><span>
</span><span id="line-586"></span><span class="annot"><a href="GHC.Builtin.Types.html#pcDataConW"><span class="hs-identifier hs-type">pcDataConW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Scaled"><span class="hs-identifier hs-type">Scaled</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-587"></span><span id="pcDataConW"><span class="annot"><span class="annottext">pcDataConW :: Name -&gt; [TyVar] -&gt; [Scaled Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataConW"><span class="hs-identifier hs-var hs-var">pcDataConW</span></a></span></span><span> </span><span id="local-6989586621680821330"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821330"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621680821329"><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821329"><span class="hs-identifier hs-var">univs</span></a></span></span><span> </span><span id="local-6989586621680821328"><span class="annot"><span class="annottext">[Scaled Type]
</span><a href="#local-6989586621680821328"><span class="hs-identifier hs-var">tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
-&gt; Name
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [Scaled Type]
-&gt; TyCon
-&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataConWithFixity"><span class="hs-identifier hs-var">pcDataConWithFixity</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821330"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821329"><span class="hs-identifier hs-var">univs</span></a></span><span>
</span><span id="line-588"></span><span>                      </span><span class="hs-special">[</span><span class="hs-special">]</span><span>    </span><span class="hs-comment">-- no ex_tvs</span><span>
</span><span id="line-589"></span><span>                      </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821329"><span class="hs-identifier hs-var">univs</span></a></span><span> </span><span class="hs-comment">-- the univs are precisely the user-written tyvars</span><span>
</span><span id="line-590"></span><span>                      </span><span class="annot"><span class="annottext">[Scaled Type]
</span><a href="#local-6989586621680821328"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-591"></span><span>
</span><span id="line-592"></span><span class="annot"><a href="GHC.Builtin.Types.html#pcDataConWithFixity"><span class="hs-identifier hs-type">pcDataConWithFixity</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>      </span><span class="hs-comment">-- ^ declared infix?</span><span>
</span><span id="line-593"></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>      </span><span class="hs-comment">-- ^ datacon name</span><span>
</span><span id="line-594"></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span>   </span><span class="hs-comment">-- ^ univ tyvars</span><span>
</span><span id="line-595"></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyCoVar"><span class="hs-identifier hs-type">TyCoVar</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-comment">-- ^ ex tycovars</span><span>
</span><span id="line-596"></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyCoVar"><span class="hs-identifier hs-type">TyCoVar</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-comment">-- ^ user-written tycovars</span><span>
</span><span id="line-597"></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Scaled"><span class="hs-identifier hs-type">Scaled</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span>    </span><span class="hs-comment">-- ^ args</span><span>
</span><span id="line-598"></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-599"></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-600"></span><span id="pcDataConWithFixity"><span class="annot"><span class="annottext">pcDataConWithFixity :: Bool
-&gt; Name
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [Scaled Type]
-&gt; TyCon
-&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataConWithFixity"><span class="hs-identifier hs-var hs-var">pcDataConWithFixity</span></a></span></span><span> </span><span id="local-6989586621680821325"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680821325"><span class="hs-identifier hs-var">infx</span></a></span></span><span> </span><span id="local-6989586621680821324"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821324"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
-&gt; Name
-&gt; Unique
-&gt; RuntimeRepInfo
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [Scaled Type]
-&gt; TyCon
-&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataConWithFixity%27"><span class="hs-identifier hs-var">pcDataConWithFixity'</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680821325"><span class="hs-identifier hs-var">infx</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821324"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Unique -&gt; Unique
</span><a href="GHC.Types.Unique.html#dataConWorkerUnique"><span class="hs-identifier hs-var">dataConWorkerUnique</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; Unique
</span><a href="GHC.Types.Name.html#nameUnique"><span class="hs-identifier hs-var">nameUnique</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821324"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-601"></span><span>                                                  </span><span class="annot"><span class="annottext">RuntimeRepInfo
</span><a href="GHC.Core.TyCon.html#NoRRI"><span class="hs-identifier hs-var">NoRRI</span></a></span><span>
</span><span id="line-602"></span><span class="hs-comment">-- The Name's unique is the first of two free uniques;</span><span>
</span><span id="line-603"></span><span class="hs-comment">-- the first is used for the datacon itself,</span><span>
</span><span id="line-604"></span><span class="hs-comment">-- the second is used for the &quot;worker name&quot;</span><span>
</span><span id="line-605"></span><span class="hs-comment">--</span><span>
</span><span id="line-606"></span><span class="hs-comment">-- To support this the mkPreludeDataConUnique function &quot;allocates&quot;</span><span>
</span><span id="line-607"></span><span class="hs-comment">-- one DataCon unique per pair of Ints.</span><span>
</span><span id="line-608"></span><span>
</span><span id="line-609"></span><span class="annot"><a href="GHC.Builtin.Types.html#pcDataConWithFixity%27"><span class="hs-identifier hs-type">pcDataConWithFixity'</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#RuntimeRepInfo"><span class="hs-identifier hs-type">RuntimeRepInfo</span></a></span><span>
</span><span id="line-610"></span><span>                     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyCoVar"><span class="hs-identifier hs-type">TyCoVar</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyCoVar"><span class="hs-identifier hs-type">TyCoVar</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-611"></span><span>                     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Scaled"><span class="hs-identifier hs-type">Scaled</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-612"></span><span class="hs-comment">-- The Name should be in the DataName name space; it's the name</span><span>
</span><span id="line-613"></span><span class="hs-comment">-- of the DataCon itself.</span><span>
</span><span id="line-614"></span><span class="hs-comment">--</span><span>
</span><span id="line-615"></span><span class="hs-comment">-- IMPORTANT NOTE:</span><span>
</span><span id="line-616"></span><span class="hs-comment">--    if you try to wire-in a /GADT/ data constructor you will</span><span>
</span><span id="line-617"></span><span class="hs-comment">--    find it hard (we did).  You will need wrapper and worker</span><span>
</span><span id="line-618"></span><span class="hs-comment">--    Names, a DataConBoxer, DataConRep, EqSpec, etc.</span><span>
</span><span id="line-619"></span><span class="hs-comment">--    Try hard not to wire-in GADT data types. You will live</span><span>
</span><span id="line-620"></span><span class="hs-comment">--    to regret doing so (we do).</span><span>
</span><span id="line-621"></span><span>
</span><span id="line-622"></span><span id="pcDataConWithFixity%27"><span class="annot"><span class="annottext">pcDataConWithFixity' :: Bool
-&gt; Name
-&gt; Unique
-&gt; RuntimeRepInfo
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [Scaled Type]
-&gt; TyCon
-&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataConWithFixity%27"><span class="hs-identifier hs-var hs-var">pcDataConWithFixity'</span></a></span></span><span> </span><span id="local-6989586621680821319"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680821319"><span class="hs-identifier hs-var">declared_infix</span></a></span></span><span> </span><span id="local-6989586621680821318"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821318"><span class="hs-identifier hs-var">dc_name</span></a></span></span><span> </span><span id="local-6989586621680821317"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821317"><span class="hs-identifier hs-var">wrk_key</span></a></span></span><span> </span><span id="local-6989586621680821316"><span class="annot"><span class="annottext">RuntimeRepInfo
</span><a href="#local-6989586621680821316"><span class="hs-identifier hs-var">rri</span></a></span></span><span>
</span><span id="line-623"></span><span>                     </span><span id="local-6989586621680821315"><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821315"><span class="hs-identifier hs-var">tyvars</span></a></span></span><span> </span><span id="local-6989586621680821314"><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821314"><span class="hs-identifier hs-var">ex_tyvars</span></a></span></span><span> </span><span id="local-6989586621680821313"><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821313"><span class="hs-identifier hs-var">user_tyvars</span></a></span></span><span> </span><span id="local-6989586621680821312"><span class="annot"><span class="annottext">[Scaled Type]
</span><a href="#local-6989586621680821312"><span class="hs-identifier hs-var">arg_tys</span></a></span></span><span> </span><span id="local-6989586621680821311"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821311"><span class="hs-identifier hs-var">tycon</span></a></span></span><span>
</span><span id="line-624"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821310"><span class="hs-identifier hs-var">data_con</span></a></span><span>
</span><span id="line-625"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-626"></span><span>    </span><span id="local-6989586621680821309"><span class="annot"><span class="annottext">tag_map :: NameEnv Arity
</span><a href="#local-6989586621680821309"><span class="hs-identifier hs-var hs-var">tag_map</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; NameEnv Arity
</span><a href="GHC.Core.TyCon.html#mkTyConTagMap"><span class="hs-identifier hs-var">mkTyConTagMap</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821311"><span class="hs-identifier hs-var">tycon</span></a></span><span>
</span><span id="line-627"></span><span>    </span><span class="hs-comment">-- This constructs the constructor Name to ConTag map once per</span><span>
</span><span id="line-628"></span><span>    </span><span class="hs-comment">-- constructor, which is quadratic. It's OK here, because it's</span><span>
</span><span id="line-629"></span><span>    </span><span class="hs-comment">-- only called for wired in data types that don't have a lot of</span><span>
</span><span id="line-630"></span><span>    </span><span class="hs-comment">-- constructors. It's also likely that GHC will lift tag_map, since</span><span>
</span><span id="line-631"></span><span>    </span><span class="hs-comment">-- we call pcDataConWithFixity' with static TyCons in the same module.</span><span>
</span><span id="line-632"></span><span>    </span><span class="hs-comment">-- See Note [Constructor tag allocation] and #14657</span><span>
</span><span id="line-633"></span><span>    </span><span id="local-6989586621680821310"><span class="annot"><span class="annottext">data_con :: DataCon
</span><a href="#local-6989586621680821310"><span class="hs-identifier hs-var hs-var">data_con</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; Bool
-&gt; Name
-&gt; [HsSrcBang]
-&gt; [FieldLabel]
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [InvisTVBinder]
-&gt; [EqSpec]
-&gt; [Type]
-&gt; [Scaled Type]
-&gt; Type
-&gt; RuntimeRepInfo
-&gt; TyCon
-&gt; Arity
-&gt; [Type]
-&gt; TyVar
-&gt; DataConRep
-&gt; DataCon
</span><a href="GHC.Core.DataCon.html#mkDataCon"><span class="hs-identifier hs-var">mkDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821318"><span class="hs-identifier hs-var">dc_name</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680821319"><span class="hs-identifier hs-var">declared_infix</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821306"><span class="hs-identifier hs-var">prom_info</span></a></span><span>
</span><span id="line-634"></span><span>                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Scaled Type -&gt; HsSrcBang) -&gt; [Scaled Type] -&gt; [HsSrcBang]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HsSrcBang -&gt; Scaled Type -&gt; HsSrcBang
forall a b. a -&gt; b -&gt; a
</span><a href="../../base/src/GHC.Base.html#const"><span class="hs-identifier hs-var">const</span></a></span><span> </span><span class="annot"><span class="annottext">HsSrcBang
</span><a href="#local-6989586621680821305"><span class="hs-identifier hs-var">no_bang</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Scaled Type]
</span><a href="#local-6989586621680821312"><span class="hs-identifier hs-var">arg_tys</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-635"></span><span>                </span><span class="hs-special">[</span><span class="hs-special">]</span><span>      </span><span class="hs-comment">-- No labelled fields</span><span>
</span><span id="line-636"></span><span>                </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821315"><span class="hs-identifier hs-var">tyvars</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821314"><span class="hs-identifier hs-var">ex_tyvars</span></a></span><span>
</span><span id="line-637"></span><span>                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Specificity -&gt; [TyVar] -&gt; [InvisTVBinder]
forall vis. vis -&gt; [TyVar] -&gt; [VarBndr TyVar vis]
</span><a href="GHC.Types.Var.html#mkTyVarBinders"><span class="hs-identifier hs-var">mkTyVarBinders</span></a></span><span> </span><span class="annot"><span class="annottext">Specificity
</span><a href="GHC.Types.Var.html#SpecifiedSpec"><span class="hs-identifier hs-var">SpecifiedSpec</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821313"><span class="hs-identifier hs-var">user_tyvars</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-638"></span><span>                </span><span class="hs-special">[</span><span class="hs-special">]</span><span>      </span><span class="hs-comment">-- No equality spec</span><span>
</span><span id="line-639"></span><span>                </span><span class="hs-special">[</span><span class="hs-special">]</span><span>      </span><span class="hs-comment">-- No theta</span><span>
</span><span id="line-640"></span><span>                </span><span class="annot"><span class="annottext">[Scaled Type]
</span><a href="#local-6989586621680821312"><span class="hs-identifier hs-var">arg_tys</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821311"><span class="hs-identifier hs-var">tycon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyVar] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTys"><span class="hs-identifier hs-var">mkTyVarTys</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821315"><span class="hs-identifier hs-var">tyvars</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-641"></span><span>                </span><span class="annot"><span class="annottext">RuntimeRepInfo
</span><a href="#local-6989586621680821316"><span class="hs-identifier hs-var">rri</span></a></span><span>
</span><span id="line-642"></span><span>                </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821311"><span class="hs-identifier hs-var">tycon</span></a></span><span>
</span><span id="line-643"></span><span>                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NameEnv Arity -&gt; Name -&gt; Arity
forall a. NameEnv a -&gt; Name -&gt; a
</span><a href="GHC.Types.Name.Env.html#lookupNameEnv_NF"><span class="hs-identifier hs-var">lookupNameEnv_NF</span></a></span><span> </span><span class="annot"><span class="annottext">NameEnv Arity
</span><a href="#local-6989586621680821309"><span class="hs-identifier hs-var">tag_map</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821318"><span class="hs-identifier hs-var">dc_name</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-644"></span><span>                </span><span class="hs-special">[</span><span class="hs-special">]</span><span>      </span><span class="hs-comment">-- No stupid theta</span><span>
</span><span id="line-645"></span><span>                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; DataCon -&gt; TyVar
</span><a href="GHC.Types.Id.Make.html#mkDataConWorkId"><span class="hs-identifier hs-var">mkDataConWorkId</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821301"><span class="hs-identifier hs-var">wrk_name</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821310"><span class="hs-identifier hs-var">data_con</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-646"></span><span>                </span><span class="annot"><span class="annottext">DataConRep
</span><a href="GHC.Core.DataCon.html#NoDataConRep"><span class="hs-identifier hs-var">NoDataConRep</span></a></span><span>    </span><span class="hs-comment">-- Wired-in types are too simple to need wrappers</span><span>
</span><span id="line-647"></span><span>
</span><span id="line-648"></span><span>    </span><span id="local-6989586621680821305"><span class="annot"><span class="annottext">no_bang :: HsSrcBang
</span><a href="#local-6989586621680821305"><span class="hs-identifier hs-var hs-var">no_bang</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SourceText -&gt; SrcUnpackedness -&gt; SrcStrictness -&gt; HsSrcBang
</span><a href="GHC.Core.DataCon.html#HsSrcBang"><span class="hs-identifier hs-var">HsSrcBang</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span> </span><span class="annot"><span class="annottext">SrcUnpackedness
</span><a href="GHC.Core.DataCon.html#NoSrcUnpack"><span class="hs-identifier hs-var">NoSrcUnpack</span></a></span><span> </span><span class="annot"><span class="annottext">SrcStrictness
</span><a href="GHC.Core.DataCon.html#NoSrcStrict"><span class="hs-identifier hs-var">NoSrcStrict</span></a></span><span>
</span><span id="line-649"></span><span>
</span><span id="line-650"></span><span>    </span><span id="local-6989586621680821301"><span class="annot"><span class="annottext">wrk_name :: Name
</span><a href="#local-6989586621680821301"><span class="hs-identifier hs-var hs-var">wrk_name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; Unique -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkDataConWorkerName"><span class="hs-identifier hs-var">mkDataConWorkerName</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821310"><span class="hs-identifier hs-var">data_con</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821317"><span class="hs-identifier hs-var">wrk_key</span></a></span><span>
</span><span id="line-651"></span><span>
</span><span id="line-652"></span><span>    </span><span id="local-6989586621680821306"><span class="annot"><span class="annottext">prom_info :: Name
</span><a href="#local-6989586621680821306"><span class="hs-identifier hs-var hs-var">prom_info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Name
</span><a href="GHC.Core.TyCon.html#mkPrelTyConRepName"><span class="hs-identifier hs-var">mkPrelTyConRepName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821318"><span class="hs-identifier hs-var">dc_name</span></a></span><span>
</span><span id="line-653"></span><span>
</span><span id="line-654"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkDataConWorkerName"><span class="hs-identifier hs-type">mkDataConWorkerName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-655"></span><span id="mkDataConWorkerName"><span class="annot"><span class="annottext">mkDataConWorkerName :: DataCon -&gt; Unique -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkDataConWorkerName"><span class="hs-identifier hs-var hs-var">mkDataConWorkerName</span></a></span></span><span> </span><span id="local-6989586621680821294"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821294"><span class="hs-identifier hs-var">data_con</span></a></span></span><span> </span><span id="local-6989586621680821293"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821293"><span class="hs-identifier hs-var">wrk_key</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-656"></span><span>    </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680821292"><span class="hs-identifier hs-var">modu</span></a></span><span> </span><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680821291"><span class="hs-identifier hs-var">wrk_occ</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821293"><span class="hs-identifier hs-var">wrk_key</span></a></span><span>
</span><span id="line-657"></span><span>                  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyVar -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#AnId"><span class="hs-identifier hs-var">AnId</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; TyVar
</span><a href="GHC.Core.DataCon.html#dataConWorkId"><span class="hs-identifier hs-var">dataConWorkId</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821294"><span class="hs-identifier hs-var">data_con</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span>
</span><span id="line-658"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-659"></span><span>    </span><span id="local-6989586621680821292"><span class="annot"><span class="annottext">modu :: Module
</span><a href="#local-6989586621680821292"><span class="hs-identifier hs-var hs-var">modu</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">ASSERT</span><span class="hs-special">(</span><span> </span><span class="hs-identifier">isExternalName</span><span> </span><span class="hs-identifier">dc_name</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-660"></span><span>               </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; Name -&gt; Module
Name -&gt; Module
</span><a href="GHC.Types.Name.html#nameModule"><span class="hs-identifier hs-var">nameModule</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821284"><span class="hs-identifier hs-var">dc_name</span></a></span><span>
</span><span id="line-661"></span><span>    </span><span id="local-6989586621680821284"><span class="annot"><span class="annottext">dc_name :: Name
</span><a href="#local-6989586621680821284"><span class="hs-identifier hs-var hs-var">dc_name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; Name
</span><a href="GHC.Core.DataCon.html#dataConName"><span class="hs-identifier hs-var">dataConName</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821294"><span class="hs-identifier hs-var">data_con</span></a></span><span>
</span><span id="line-662"></span><span>    </span><span id="local-6989586621680821280"><span class="annot"><span class="annottext">dc_occ :: OccName
</span><a href="#local-6989586621680821280"><span class="hs-identifier hs-var hs-var">dc_occ</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; OccName
</span><a href="GHC.Types.Name.html#nameOccName"><span class="hs-identifier hs-var">nameOccName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821284"><span class="hs-identifier hs-var">dc_name</span></a></span><span>
</span><span id="line-663"></span><span>    </span><span id="local-6989586621680821291"><span class="annot"><span class="annottext">wrk_occ :: OccName
</span><a href="#local-6989586621680821291"><span class="hs-identifier hs-var hs-var">wrk_occ</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OccName -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkDataConWorkerOcc"><span class="hs-identifier hs-var">mkDataConWorkerOcc</span></a></span><span> </span><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680821280"><span class="hs-identifier hs-var">dc_occ</span></a></span><span>
</span><span id="line-664"></span><span>
</span><span id="line-665"></span><span class="hs-comment">-- used for RuntimeRep and friends</span><span>
</span><span id="line-666"></span><span class="annot"><a href="GHC.Builtin.Types.html#pcSpecialDataCon"><span class="hs-identifier hs-type">pcSpecialDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#RuntimeRepInfo"><span class="hs-identifier hs-type">RuntimeRepInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-667"></span><span id="pcSpecialDataCon"><span class="annot"><span class="annottext">pcSpecialDataCon :: Name -&gt; [Type] -&gt; TyCon -&gt; RuntimeRepInfo -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcSpecialDataCon"><span class="hs-identifier hs-var hs-var">pcSpecialDataCon</span></a></span></span><span> </span><span id="local-6989586621680821276"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821276"><span class="hs-identifier hs-var">dc_name</span></a></span></span><span> </span><span id="local-6989586621680821275"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821275"><span class="hs-identifier hs-var">arg_tys</span></a></span></span><span> </span><span id="local-6989586621680821274"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821274"><span class="hs-identifier hs-var">tycon</span></a></span></span><span> </span><span id="local-6989586621680821273"><span class="annot"><span class="annottext">RuntimeRepInfo
</span><a href="#local-6989586621680821273"><span class="hs-identifier hs-var">rri</span></a></span></span><span>
</span><span id="line-668"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
-&gt; Name
-&gt; Unique
-&gt; RuntimeRepInfo
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [Scaled Type]
-&gt; TyCon
-&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataConWithFixity%27"><span class="hs-identifier hs-var">pcDataConWithFixity'</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821276"><span class="hs-identifier hs-var">dc_name</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Unique -&gt; Unique
</span><a href="GHC.Types.Unique.html#dataConWorkerUnique"><span class="hs-identifier hs-var">dataConWorkerUnique</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; Unique
</span><a href="GHC.Types.Name.html#nameUnique"><span class="hs-identifier hs-var">nameUnique</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821276"><span class="hs-identifier hs-var">dc_name</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">RuntimeRepInfo
</span><a href="#local-6989586621680821273"><span class="hs-identifier hs-var">rri</span></a></span><span>
</span><span id="line-669"></span><span>                         </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Type -&gt; Scaled Type) -&gt; [Type] -&gt; [Scaled Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; Scaled Type
forall a. a -&gt; Scaled a
</span><a href="GHC.Core.Type.html#linear"><span class="hs-identifier hs-var">linear</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821275"><span class="hs-identifier hs-var">arg_tys</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821274"><span class="hs-identifier hs-var">tycon</span></a></span><span>
</span><span id="line-670"></span><span>
</span><span id="line-671"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
      Kinds
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-678"></span><span>
</span><span id="line-679"></span><span class="annot"><a href="GHC.Builtin.Types.html#typeNatKindCon"><span class="hs-identifier hs-type">typeNatKindCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#typeSymbolKindCon"><span class="hs-identifier hs-type">typeSymbolKindCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-680"></span><span class="hs-comment">-- data Nat</span><span>
</span><span id="line-681"></span><span class="hs-comment">-- data Symbol</span><span>
</span><span id="line-682"></span><span id="typeNatKindCon"><span class="annot"><span class="annottext">typeNatKindCon :: TyCon
</span><a href="GHC.Builtin.Types.html#typeNatKindCon"><span class="hs-identifier hs-var hs-var">typeNatKindCon</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#typeNatKindConName"><span class="hs-identifier hs-var">typeNatKindConName</span></a></span><span>    </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-683"></span><span id="typeSymbolKindCon"><span class="annot"><span class="annottext">typeSymbolKindCon :: TyCon
</span><a href="GHC.Builtin.Types.html#typeSymbolKindCon"><span class="hs-identifier hs-var hs-var">typeSymbolKindCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#typeSymbolKindConName"><span class="hs-identifier hs-var">typeSymbolKindConName</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-684"></span><span>
</span><span id="line-685"></span><span class="annot"><a href="GHC.Builtin.Types.html#typeNatKind"><span class="hs-identifier hs-type">typeNatKind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#typeSymbolKind"><span class="hs-identifier hs-type">typeSymbolKind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span>
</span><span id="line-686"></span><span id="typeNatKind"><span class="annot"><span class="annottext">typeNatKind :: Type
</span><a href="GHC.Builtin.Types.html#typeNatKind"><span class="hs-identifier hs-var hs-var">typeNatKind</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#typeNatKindCon"><span class="hs-identifier hs-var">typeNatKindCon</span></a></span><span>
</span><span id="line-687"></span><span id="typeSymbolKind"><span class="annot"><span class="annottext">typeSymbolKind :: Type
</span><a href="GHC.Builtin.Types.html#typeSymbolKind"><span class="hs-identifier hs-var hs-var">typeSymbolKind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#typeSymbolKindCon"><span class="hs-identifier hs-var">typeSymbolKindCon</span></a></span><span>
</span><span id="line-688"></span><span>
</span><span id="line-689"></span><span class="annot"><a href="GHC.Builtin.Types.html#constraintKindTyCon"><span class="hs-identifier hs-type">constraintKindTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-690"></span><span class="hs-comment">-- 'TyCon.isConstraintKindCon' assumes that this is an AlgTyCon!</span><span>
</span><span id="line-691"></span><span id="constraintKindTyCon"><span class="annot"><span class="annottext">constraintKindTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#constraintKindTyCon"><span class="hs-identifier hs-var hs-var">constraintKindTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#constraintKindTyConName"><span class="hs-identifier hs-var">constraintKindTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-692"></span><span>
</span><span id="line-693"></span><span class="annot"><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-type">liftedTypeKind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#typeToTypeKind"><span class="hs-identifier hs-type">typeToTypeKind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#constraintKind"><span class="hs-identifier hs-type">constraintKind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span>
</span><span id="line-694"></span><span id="liftedTypeKind"><span class="annot"><span class="annottext">liftedTypeKind :: Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var hs-var">liftedTypeKind</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedRepTy"><span class="hs-identifier hs-var">liftedRepTy</span></a></span><span>
</span><span id="line-695"></span><span id="typeToTypeKind"><span class="annot"><span class="annottext">typeToTypeKind :: Type
</span><a href="GHC.Builtin.Types.html#typeToTypeKind"><span class="hs-identifier hs-var hs-var">typeToTypeKind</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkVisFunTyMany"><span class="hs-operator hs-var">`mkVisFunTyMany`</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span>
</span><span id="line-696"></span><span id="constraintKind"><span class="annot"><span class="annottext">constraintKind :: Type
</span><a href="GHC.Builtin.Types.html#constraintKind"><span class="hs-identifier hs-var hs-var">constraintKind</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#constraintKindTyCon"><span class="hs-identifier hs-var">constraintKindTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-697"></span><span>
</span><span id="line-698"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
                Stuff for dealing with tuples
*                                                                      *
************************************************************************

Note [How tuples work]  See also Note [Known-key names] in GHC.Builtin.Names
~~~~~~~~~~~~~~~~~~~~~~
* There are three families of tuple TyCons and corresponding
  DataCons, expressed by the type BasicTypes.TupleSort:
    data TupleSort = BoxedTuple | UnboxedTuple | ConstraintTuple

* All three families are AlgTyCons, whose AlgTyConRhs is TupleTyCon

* BoxedTuples
    - A wired-in type
    - Data type declarations in GHC.Tuple
    - The data constructors really have an info table

* UnboxedTuples
    - A wired-in type
    - Have a pretend DataCon, defined in GHC.Prim,
      but no actual declaration and no info table

* ConstraintTuples
    - Are known-key rather than wired-in. Reason: it's awkward to
      have all the superclass selectors wired-in.
    - Declared as classes in GHC.Classes, e.g.
         class (c1,c2) =&gt; (c1,c2)
    - Given constraints: the superclasses automatically become available
    - Wanted constraints: there is a built-in instance
         instance (c1,c2) =&gt; (c1,c2)
      See GHC.Tc.Solver.Interact.matchCTuple
    - Currently just go up to 62; beyond that
      you have to use manual nesting
    - Their OccNames look like (%,,,%), so they can easily be
      distinguished from term tuples.  But (following Haskell) we
      pretty-print saturated constraint tuples with round parens;
      see BasicTypes.tupleParens.

* In quite a lot of places things are restricted just to
  BoxedTuple/UnboxedTuple, and then we used BasicTypes.Boxity to distinguish
  E.g. tupleTyCon has a Boxity argument

* When looking up an OccName in the original-name cache
  (GHC.Iface.Env.lookupOrigNameCache), we spot the tuple OccName to make sure
  we get the right wired-in name.  This guy can't tell the difference
  between BoxedTuple and ConstraintTuple (same OccName!), so tuples
  are not serialised into interface files using OccNames at all.

* Serialization to interface files works via the usual mechanism for known-key
  things: instead of serializing the OccName we just serialize the key. During
  deserialization we lookup the Name associated with the unique with the logic
  in GHC.Builtin.Uniques. See Note [Symbol table representation of names] for details.

Note [One-tuples]
~~~~~~~~~~~~~~~~~
GHC supports both boxed and unboxed one-tuples:
 - Unboxed one-tuples are sometimes useful when returning a
   single value after CPR analysis
 - A boxed one-tuple is used by GHC.HsToCore.Utils.mkSelectorBinds, when
   there is just one binder
Basically it keeps everything uniform.

However the /naming/ of the type/data constructors for one-tuples is a
bit odd:
  3-tuples:  (,,)   (,,)#
  2-tuples:  (,)    (,)#
  1-tuples:  ??
  0-tuples:  ()     ()#

Zero-tuples have used up the logical name. So we use 'Solo' and 'Solo#'
for one-tuples.  So in ghc-prim:GHC.Tuple we see the declarations:
  data ()     = ()
  data Solo a = Solo a
  data (a,b)  = (a,b)

There is no way to write a boxed one-tuple in Haskell using tuple syntax.
They can, however, be written using other methods:

1. They can be written directly by importing them from GHC.Tuple.
2. They can be generated by way of Template Haskell or in `deriving` code.

There is nothing special about one-tuples in Core; in particular, they have no
custom pretty-printing, just using `Solo`.

Note that there is *not* a unary constraint tuple, unlike for other forms of
tuples. See [Ignore unary constraint tuples] in GHC.Tc.Gen.HsType for more
details.

See also Note [Flattening one-tuples] in GHC.Core.Make and
Note [Don't flatten tuples from HsSyn] in GHC.Core.Make.

-----
-- Wrinkle: Make boxed one-tuple names have known keys
-----

We make boxed one-tuple names have known keys so that `data Solo a = Solo a`,
defined in GHC.Tuple, will be used when one-tuples are spliced in through
Template Haskell. This program (from #18097) crucially relies on this:

  case $( tupE [ [| &quot;ok&quot; |] ] ) of Solo x -&gt; putStrLn x

Unless Solo has a known key, the type of `$( tupE [ [| &quot;ok&quot; |] ] )` (an
ExplicitTuple of length 1) will not match the type of Solo (an ordinary
data constructor used in a pattern). Making Solo known-key allows GHC to make
this connection.

Unlike Solo, every other tuple is /not/ known-key
(see Note [Infinite families of known-key names] in GHC.Builtin.Names). The
main reason for this exception is that other tuples are written with special
syntax, and as a result, they are renamed using a special `isBuiltInOcc_maybe`
function (see Note [Built-in syntax and the OrigNameCache] in GHC.Types.Name.Cache).
In contrast, Solo is just an ordinary data type with no special syntax, so it
doesn't really make sense to handle it in `isBuiltInOcc_maybe`. Making Solo
known-key is the next-best way to teach the internals of the compiler about it.
-}</span><span>
</span><span id="line-816"></span><span>
</span><span id="line-817"></span><span class="hs-comment">-- | Built-in syntax isn't &quot;in scope&quot; so these OccNames map to wired-in Names</span><span>
</span><span id="line-818"></span><span class="hs-comment">-- with BuiltInSyntax. However, this should only be necessary while resolving</span><span>
</span><span id="line-819"></span><span class="hs-comment">-- names produced by Template Haskell splices since we take care to encode</span><span>
</span><span id="line-820"></span><span class="hs-comment">-- built-in syntax names specially in interface files. See</span><span>
</span><span id="line-821"></span><span class="hs-comment">-- Note [Symbol table representation of names].</span><span>
</span><span id="line-822"></span><span class="hs-comment">--</span><span>
</span><span id="line-823"></span><span class="hs-comment">-- Moreover, there is no need to include names of things that the user can't</span><span>
</span><span id="line-824"></span><span class="hs-comment">-- write (e.g. type representation bindings like $tc(,,,)).</span><span>
</span><span id="line-825"></span><span class="annot"><a href="GHC.Builtin.Types.html#isBuiltInOcc_maybe"><span class="hs-identifier hs-type">isBuiltInOcc_maybe</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Occurrence.html#OccName"><span class="hs-identifier hs-type">OccName</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-826"></span><span id="isBuiltInOcc_maybe"><span class="annot"><span class="annottext">isBuiltInOcc_maybe :: OccName -&gt; Maybe Name
</span><a href="GHC.Builtin.Types.html#isBuiltInOcc_maybe"><span class="hs-identifier hs-var hs-var">isBuiltInOcc_maybe</span></a></span></span><span> </span><span id="local-6989586621680821270"><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680821270"><span class="hs-identifier hs-var">occ</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-827"></span><span>    </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821269"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-828"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;[]&quot;</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Maybe Name) -&gt; Name -&gt; Maybe Name
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Name -&gt; Name -&gt; Name
</span><a href="#local-6989586621680821268"><span class="hs-identifier hs-var">choose_ns</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#listTyConName"><span class="hs-identifier hs-var">listTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#nilDataConName"><span class="hs-identifier hs-var">nilDataConName</span></a></span><span>
</span><span id="line-829"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;:&quot;</span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#consDataConName"><span class="hs-identifier hs-var">consDataConName</span></a></span><span>
</span><span id="line-830"></span><span>
</span><span id="line-831"></span><span>      </span><span class="hs-comment">-- equality tycon</span><span>
</span><span id="line-832"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;~&quot;</span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#eqTyConName"><span class="hs-identifier hs-var">eqTyConName</span></a></span><span>
</span><span id="line-833"></span><span>
</span><span id="line-834"></span><span>      </span><span class="hs-comment">-- function tycon</span><span>
</span><span id="line-835"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;FUN&quot;</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#funTyConName"><span class="hs-identifier hs-var">funTyConName</span></a></span><span>
</span><span id="line-836"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;-&gt;&quot;</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#unrestrictedFunTyConName"><span class="hs-identifier hs-var">unrestrictedFunTyConName</span></a></span><span>
</span><span id="line-837"></span><span>
</span><span id="line-838"></span><span>      </span><span class="hs-comment">-- boxed tuple data/tycon</span><span>
</span><span id="line-839"></span><span>      </span><span class="hs-comment">-- We deliberately exclude Solo (the boxed 1-tuple).</span><span>
</span><span id="line-840"></span><span>      </span><span class="hs-comment">-- See Note [One-tuples] (Wrinkle: Make boxed one-tuple names have known keys)</span><span>
</span><span id="line-841"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;()&quot;</span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Maybe Name) -&gt; Name -&gt; Maybe Name
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; Name
</span><a href="#local-6989586621680821266"><span class="hs-identifier hs-var">tup_name</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span>
</span><span id="line-842"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680821264"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821264"><span class="hs-identifier hs-var">rest</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;(&quot;</span></span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; ByteString -&gt; Maybe ByteString
</span><a href="../../bytestring/src/Data.ByteString.html#stripPrefix"><span class="hs-operator hs-var">`BS.stripPrefix`</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821269"><span class="hs-identifier hs-var">name</span></a></span><span>
</span><span id="line-843"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680821262"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821262"><span class="hs-identifier hs-var">commas</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680821261"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821261"><span class="hs-identifier hs-var">rest'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">(Char -&gt; Bool) -&gt; ByteString -&gt; (ByteString, ByteString)
</span><a href="../../bytestring/src/Data.ByteString.Char8.html#span"><span class="hs-identifier hs-var">BS.span</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; Char -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">','</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821264"><span class="hs-identifier hs-var">rest</span></a></span><span>
</span><span id="line-844"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;)&quot;</span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821261"><span class="hs-identifier hs-var">rest'</span></a></span><span>
</span><span id="line-845"></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Maybe Name) -&gt; Name -&gt; Maybe Name
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; Name
</span><a href="#local-6989586621680821266"><span class="hs-identifier hs-var">tup_name</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span class="annot"><span class="annottext">ByteString -&gt; Arity
</span><a href="../../bytestring/src/Data.ByteString.html#length"><span class="hs-identifier hs-var">BS.length</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821262"><span class="hs-identifier hs-var">commas</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-846"></span><span>
</span><span id="line-847"></span><span>      </span><span class="hs-comment">-- unboxed tuple data/tycon</span><span>
</span><span id="line-848"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;(##)&quot;</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Maybe Name) -&gt; Name -&gt; Maybe Name
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; Name
</span><a href="#local-6989586621680821266"><span class="hs-identifier hs-var">tup_name</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span>
</span><span id="line-849"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;Solo#&quot;</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Maybe Name) -&gt; Name -&gt; Maybe Name
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; Name
</span><a href="#local-6989586621680821266"><span class="hs-identifier hs-var">tup_name</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span>
</span><span id="line-850"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680821256"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821256"><span class="hs-identifier hs-var">rest</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;(#&quot;</span></span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; ByteString -&gt; Maybe ByteString
</span><a href="../../bytestring/src/Data.ByteString.html#stripPrefix"><span class="hs-operator hs-var">`BS.stripPrefix`</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821269"><span class="hs-identifier hs-var">name</span></a></span><span>
</span><span id="line-851"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680821255"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821255"><span class="hs-identifier hs-var">commas</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680821254"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821254"><span class="hs-identifier hs-var">rest'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">(Char -&gt; Bool) -&gt; ByteString -&gt; (ByteString, ByteString)
</span><a href="../../bytestring/src/Data.ByteString.Char8.html#span"><span class="hs-identifier hs-var">BS.span</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; Char -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">','</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821256"><span class="hs-identifier hs-var">rest</span></a></span><span>
</span><span id="line-852"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;#)&quot;</span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821254"><span class="hs-identifier hs-var">rest'</span></a></span><span>
</span><span id="line-853"></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Maybe Name) -&gt; Name -&gt; Maybe Name
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; Name
</span><a href="#local-6989586621680821266"><span class="hs-identifier hs-var">tup_name</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span class="annot"><span class="annottext">ByteString -&gt; Arity
</span><a href="../../bytestring/src/Data.ByteString.html#length"><span class="hs-identifier hs-var">BS.length</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821255"><span class="hs-identifier hs-var">commas</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-854"></span><span>
</span><span id="line-855"></span><span>      </span><span class="hs-comment">-- unboxed sum tycon</span><span>
</span><span id="line-856"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680821253"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821253"><span class="hs-identifier hs-var">rest</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;(#&quot;</span></span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; ByteString -&gt; Maybe ByteString
</span><a href="../../bytestring/src/Data.ByteString.html#stripPrefix"><span class="hs-operator hs-var">`BS.stripPrefix`</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821269"><span class="hs-identifier hs-var">name</span></a></span><span>
</span><span id="line-857"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680821252"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821252"><span class="hs-identifier hs-var">pipes</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680821251"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821251"><span class="hs-identifier hs-var">rest'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">(Char -&gt; Bool) -&gt; ByteString -&gt; (ByteString, ByteString)
</span><a href="../../bytestring/src/Data.ByteString.Char8.html#span"><span class="hs-identifier hs-var">BS.span</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; Char -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'|'</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821253"><span class="hs-identifier hs-var">rest</span></a></span><span>
</span><span id="line-858"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;#)&quot;</span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821251"><span class="hs-identifier hs-var">rest'</span></a></span><span>
</span><span id="line-859"></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Maybe Name) -&gt; Name -&gt; Maybe Name
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Name
</span><a href="GHC.Core.TyCon.html#tyConName"><span class="hs-identifier hs-var hs-var">tyConName</span></a></span><span> </span><span class="annot"><span class="annottext">(TyCon -&gt; Name) -&gt; TyCon -&gt; Name
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#sumTyCon"><span class="hs-identifier hs-var">sumTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span class="annot"><span class="annottext">ByteString -&gt; Arity
</span><a href="../../bytestring/src/Data.ByteString.html#length"><span class="hs-identifier hs-var">BS.length</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821252"><span class="hs-identifier hs-var">pipes</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-860"></span><span>
</span><span id="line-861"></span><span>      </span><span class="hs-comment">-- unboxed sum datacon</span><span>
</span><span id="line-862"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680821250"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821250"><span class="hs-identifier hs-var">rest</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;(#&quot;</span></span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; ByteString -&gt; Maybe ByteString
</span><a href="../../bytestring/src/Data.ByteString.html#stripPrefix"><span class="hs-operator hs-var">`BS.stripPrefix`</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821269"><span class="hs-identifier hs-var">name</span></a></span><span>
</span><span id="line-863"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680821249"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821249"><span class="hs-identifier hs-var">pipes1</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680821248"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821248"><span class="hs-identifier hs-var">rest'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">(Char -&gt; Bool) -&gt; ByteString -&gt; (ByteString, ByteString)
</span><a href="../../bytestring/src/Data.ByteString.Char8.html#span"><span class="hs-identifier hs-var">BS.span</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; Char -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'|'</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821250"><span class="hs-identifier hs-var">rest</span></a></span><span>
</span><span id="line-864"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680821247"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821247"><span class="hs-identifier hs-var">rest''</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;_&quot;</span></span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; ByteString -&gt; Maybe ByteString
</span><a href="../../bytestring/src/Data.ByteString.html#stripPrefix"><span class="hs-operator hs-var">`BS.stripPrefix`</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821248"><span class="hs-identifier hs-var">rest'</span></a></span><span>
</span><span id="line-865"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680821246"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821246"><span class="hs-identifier hs-var">pipes2</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680821245"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821245"><span class="hs-identifier hs-var">rest'''</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">(Char -&gt; Bool) -&gt; ByteString -&gt; (ByteString, ByteString)
</span><a href="../../bytestring/src/Data.ByteString.Char8.html#span"><span class="hs-identifier hs-var">BS.span</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; Char -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'|'</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821247"><span class="hs-identifier hs-var">rest''</span></a></span><span>
</span><span id="line-866"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-string">&quot;#)&quot;</span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821245"><span class="hs-identifier hs-var">rest'''</span></a></span><span>
</span><span id="line-867"></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621680821241"><span class="annot"><span class="annottext">arity :: Arity
</span><a href="#local-6989586621680821241"><span class="hs-identifier hs-var hs-var">arity</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; Arity
</span><a href="../../bytestring/src/Data.ByteString.html#length"><span class="hs-identifier hs-var">BS.length</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821249"><span class="hs-identifier hs-var">pipes1</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; Arity
</span><a href="../../bytestring/src/Data.ByteString.html#length"><span class="hs-identifier hs-var">BS.length</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821246"><span class="hs-identifier hs-var">pipes2</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span>
</span><span id="line-868"></span><span>                    </span><span id="local-6989586621680821238"><span class="annot"><span class="annottext">alt :: Arity
</span><a href="#local-6989586621680821238"><span class="hs-identifier hs-var hs-var">alt</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; Arity
</span><a href="../../bytestring/src/Data.ByteString.html#length"><span class="hs-identifier hs-var">BS.length</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680821249"><span class="hs-identifier hs-var">pipes1</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span>
</span><span id="line-869"></span><span>                </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(Name -&gt; Maybe Name) -&gt; Name -&gt; Maybe Name
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; Name
</span><a href="GHC.Core.DataCon.html#dataConName"><span class="hs-identifier hs-var">dataConName</span></a></span><span> </span><span class="annot"><span class="annottext">(DataCon -&gt; Name) -&gt; DataCon -&gt; Name
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#sumDataCon"><span class="hs-identifier hs-var">sumDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821238"><span class="hs-identifier hs-var">alt</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821241"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-870"></span><span>      </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe Name
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-871"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-872"></span><span>    </span><span id="local-6989586621680821269"><span class="annot"><span class="annottext">name :: ByteString
</span><a href="#local-6989586621680821269"><span class="hs-identifier hs-var hs-var">name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; ByteString
</span><a href="GHC.Data.FastString.html#bytesFS"><span class="hs-identifier hs-var">bytesFS</span></a></span><span> </span><span class="annot"><span class="annottext">(FastString -&gt; ByteString) -&gt; FastString -&gt; ByteString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">OccName -&gt; FastString
</span><a href="GHC.Types.Name.Occurrence.html#occNameFS"><span class="hs-identifier hs-var hs-var">occNameFS</span></a></span><span> </span><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680821270"><span class="hs-identifier hs-var">occ</span></a></span><span>
</span><span id="line-873"></span><span>
</span><span id="line-874"></span><span>    </span><span class="annot"><a href="#local-6989586621680821268"><span class="hs-identifier hs-type">choose_ns</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-875"></span><span>    </span><span id="local-6989586621680821268"><span class="annot"><span class="annottext">choose_ns :: Name -&gt; Name -&gt; Name
</span><a href="#local-6989586621680821268"><span class="hs-identifier hs-var hs-var">choose_ns</span></a></span></span><span> </span><span id="local-6989586621680821235"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821235"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span id="local-6989586621680821234"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821234"><span class="hs-identifier hs-var">dc</span></a></span></span><span>
</span><span id="line-876"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">NameSpace -&gt; Bool
</span><a href="GHC.Types.Name.Occurrence.html#isTcClsNameSpace"><span class="hs-identifier hs-var">isTcClsNameSpace</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="#local-6989586621680821232"><span class="hs-identifier hs-var">ns</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821235"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-877"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">NameSpace -&gt; Bool
</span><a href="GHC.Types.Name.Occurrence.html#isDataConNameSpace"><span class="hs-identifier hs-var">isDataConNameSpace</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="#local-6989586621680821232"><span class="hs-identifier hs-var">ns</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821234"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-878"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; SDoc -&gt; Name
forall a. HasCallStack =&gt; [Char] -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;tup_name&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">OccName -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680821270"><span class="hs-identifier hs-var">occ</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-879"></span><span>      </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621680821232"><span class="annot"><span class="annottext">ns :: NameSpace
</span><a href="#local-6989586621680821232"><span class="hs-identifier hs-var hs-var">ns</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OccName -&gt; NameSpace
</span><a href="GHC.Types.Name.Occurrence.html#occNameSpace"><span class="hs-identifier hs-var hs-var">occNameSpace</span></a></span><span> </span><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680821270"><span class="hs-identifier hs-var">occ</span></a></span><span>
</span><span id="line-880"></span><span>
</span><span id="line-881"></span><span>    </span><span id="local-6989586621680821266"><span class="annot"><span class="annottext">tup_name :: Boxity -&gt; Arity -&gt; Name
</span><a href="#local-6989586621680821266"><span class="hs-identifier hs-var hs-var">tup_name</span></a></span></span><span> </span><span id="local-6989586621680821223"><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821223"><span class="hs-identifier hs-var">boxity</span></a></span></span><span> </span><span id="local-6989586621680821222"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821222"><span class="hs-identifier hs-var">arity</span></a></span></span><span>
</span><span id="line-882"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Name -&gt; Name
</span><a href="#local-6989586621680821268"><span class="hs-identifier hs-var">choose_ns</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; Name
forall a. NamedThing a =&gt; a -&gt; Name
</span><a href="GHC.Types.Name.html#getName"><span class="hs-identifier hs-var">getName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-var">tupleTyCon</span></a></span><span>   </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821223"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821222"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-883"></span><span>                  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; Name
forall a. NamedThing a =&gt; a -&gt; Name
</span><a href="GHC.Types.Name.html#getName"><span class="hs-identifier hs-var">getName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#tupleDataCon"><span class="hs-identifier hs-var">tupleDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821223"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821222"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-884"></span><span>
</span><span id="line-885"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkTupleOcc"><span class="hs-identifier hs-type">mkTupleOcc</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Occurrence.html#NameSpace"><span class="hs-identifier hs-type">NameSpace</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Boxity"><span class="hs-identifier hs-type">Boxity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Occurrence.html#OccName"><span class="hs-identifier hs-type">OccName</span></a></span><span>
</span><span id="line-886"></span><span class="hs-comment">-- No need to cache these, the caching is done in mk_tuple</span><span>
</span><span id="line-887"></span><span id="mkTupleOcc"><span class="annot"><span class="annottext">mkTupleOcc :: NameSpace -&gt; Boxity -&gt; Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkTupleOcc"><span class="hs-identifier hs-var hs-var">mkTupleOcc</span></a></span></span><span> </span><span id="local-6989586621680821219"><span class="annot"><span class="annottext">NameSpace
</span><a href="#local-6989586621680821219"><span class="hs-identifier hs-var">ns</span></a></span></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span>   </span><span id="local-6989586621680821218"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821218"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSpace -&gt; [Char] -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkOccName"><span class="hs-identifier hs-var">mkOccName</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="#local-6989586621680821219"><span class="hs-identifier hs-var">ns</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#mkBoxedTupleStr"><span class="hs-identifier hs-var">mkBoxedTupleStr</span></a></span><span>   </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821218"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-888"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkTupleOcc"><span class="hs-identifier hs-var">mkTupleOcc</span></a></span><span> </span><span id="local-6989586621680821215"><span class="annot"><span class="annottext">NameSpace
</span><a href="#local-6989586621680821215"><span class="hs-identifier hs-var">ns</span></a></span></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span id="local-6989586621680821214"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821214"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSpace -&gt; [Char] -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkOccName"><span class="hs-identifier hs-var">mkOccName</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="#local-6989586621680821215"><span class="hs-identifier hs-var">ns</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#mkUnboxedTupleStr"><span class="hs-identifier hs-var">mkUnboxedTupleStr</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821214"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-889"></span><span>
</span><span id="line-890"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkCTupleOcc"><span class="hs-identifier hs-type">mkCTupleOcc</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Occurrence.html#NameSpace"><span class="hs-identifier hs-type">NameSpace</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Occurrence.html#OccName"><span class="hs-identifier hs-type">OccName</span></a></span><span>
</span><span id="line-891"></span><span id="mkCTupleOcc"><span class="annot"><span class="annottext">mkCTupleOcc :: NameSpace -&gt; Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkCTupleOcc"><span class="hs-identifier hs-var hs-var">mkCTupleOcc</span></a></span></span><span> </span><span id="local-6989586621680821211"><span class="annot"><span class="annottext">NameSpace
</span><a href="#local-6989586621680821211"><span class="hs-identifier hs-var">ns</span></a></span></span><span> </span><span id="local-6989586621680821210"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821210"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSpace -&gt; [Char] -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkOccName"><span class="hs-identifier hs-var">mkOccName</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="#local-6989586621680821211"><span class="hs-identifier hs-var">ns</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#mkConstraintTupleStr"><span class="hs-identifier hs-var">mkConstraintTupleStr</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821210"><span class="hs-identifier hs-var">ar</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-892"></span><span>
</span><span id="line-893"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkTupleStr"><span class="hs-identifier hs-type">mkTupleStr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Boxity"><span class="hs-identifier hs-type">Boxity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-894"></span><span id="mkTupleStr"><span class="annot"><span class="annottext">mkTupleStr :: Boxity -&gt; Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#mkTupleStr"><span class="hs-identifier hs-var hs-var">mkTupleStr</span></a></span></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#mkBoxedTupleStr"><span class="hs-identifier hs-var">mkBoxedTupleStr</span></a></span><span>
</span><span id="line-895"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkTupleStr"><span class="hs-identifier hs-var">mkTupleStr</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#mkUnboxedTupleStr"><span class="hs-identifier hs-var">mkUnboxedTupleStr</span></a></span><span>
</span><span id="line-896"></span><span>
</span><span id="line-897"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkBoxedTupleStr"><span class="hs-identifier hs-type">mkBoxedTupleStr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-898"></span><span id="mkBoxedTupleStr"><span class="annot"><span class="annottext">mkBoxedTupleStr :: Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#mkBoxedTupleStr"><span class="hs-identifier hs-var hs-var">mkBoxedTupleStr</span></a></span></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;()&quot;</span></span><span>
</span><span id="line-899"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkBoxedTupleStr"><span class="hs-identifier hs-var">mkBoxedTupleStr</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Solo&quot;</span></span><span>   </span><span class="hs-comment">-- See Note [One-tuples]</span><span>
</span><span id="line-900"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkBoxedTupleStr"><span class="hs-identifier hs-var">mkBoxedTupleStr</span></a></span><span> </span><span id="local-6989586621680821208"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821208"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'('</span></span><span> </span><span class="annot"><span class="annottext">Char -&gt; [Char] -&gt; [Char]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#commas"><span class="hs-identifier hs-var">commas</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821208"><span class="hs-identifier hs-var">ar</span></a></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;)&quot;</span></span><span>
</span><span id="line-901"></span><span>
</span><span id="line-902"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkUnboxedTupleStr"><span class="hs-identifier hs-type">mkUnboxedTupleStr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-903"></span><span id="mkUnboxedTupleStr"><span class="annot"><span class="annottext">mkUnboxedTupleStr :: Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#mkUnboxedTupleStr"><span class="hs-identifier hs-var hs-var">mkUnboxedTupleStr</span></a></span></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;(##)&quot;</span></span><span>
</span><span id="line-904"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkUnboxedTupleStr"><span class="hs-identifier hs-var">mkUnboxedTupleStr</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Solo#&quot;</span></span><span>  </span><span class="hs-comment">-- See Note [One-tuples]</span><span>
</span><span id="line-905"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkUnboxedTupleStr"><span class="hs-identifier hs-var">mkUnboxedTupleStr</span></a></span><span> </span><span id="local-6989586621680821206"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821206"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;(#&quot;</span></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#commas"><span class="hs-identifier hs-var">commas</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821206"><span class="hs-identifier hs-var">ar</span></a></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;#)&quot;</span></span><span>
</span><span id="line-906"></span><span>
</span><span id="line-907"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkConstraintTupleStr"><span class="hs-identifier hs-type">mkConstraintTupleStr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-908"></span><span id="mkConstraintTupleStr"><span class="annot"><span class="annottext">mkConstraintTupleStr :: Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#mkConstraintTupleStr"><span class="hs-identifier hs-var hs-var">mkConstraintTupleStr</span></a></span></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;(%%)&quot;</span></span><span>
</span><span id="line-909"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkConstraintTupleStr"><span class="hs-identifier hs-var">mkConstraintTupleStr</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Solo%&quot;</span></span><span>   </span><span class="hs-comment">-- See Note [One-tuples]</span><span>
</span><span id="line-910"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkConstraintTupleStr"><span class="hs-identifier hs-var">mkConstraintTupleStr</span></a></span><span> </span><span id="local-6989586621680821205"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821205"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;(%&quot;</span></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#commas"><span class="hs-identifier hs-var">commas</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821205"><span class="hs-identifier hs-var">ar</span></a></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;%)&quot;</span></span><span>
</span><span id="line-911"></span><span>
</span><span id="line-912"></span><span class="annot"><a href="GHC.Builtin.Types.html#commas"><span class="hs-identifier hs-type">commas</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-913"></span><span id="commas"><span class="annot"><span class="annottext">commas :: Arity -&gt; [Char]
</span><a href="GHC.Builtin.Types.html#commas"><span class="hs-identifier hs-var hs-var">commas</span></a></span></span><span> </span><span id="local-6989586621680821204"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821204"><span class="hs-identifier hs-var">ar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char] -&gt; [Char]
forall a. Arity -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#take"><span class="hs-identifier hs-var">take</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821204"><span class="hs-identifier hs-var">ar</span></a></span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; [Char]
forall a. a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#repeat"><span class="hs-identifier hs-var">repeat</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">','</span></span><span class="hs-special">)</span><span>
</span><span id="line-914"></span><span>
</span><span id="line-915"></span><span class="annot"><a href="GHC.Builtin.Types.html#cTupleTyConName"><span class="hs-identifier hs-type">cTupleTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-916"></span><span id="cTupleTyConName"><span class="annot"><span class="annottext">cTupleTyConName :: Arity -&gt; Name
</span><a href="GHC.Builtin.Types.html#cTupleTyConName"><span class="hs-identifier hs-var hs-var">cTupleTyConName</span></a></span></span><span> </span><span id="local-6989586621680821201"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821201"><span class="hs-identifier hs-var">arity</span></a></span></span><span>
</span><span id="line-917"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unique -&gt; Module -&gt; OccName -&gt; SrcSpan -&gt; Name
</span><a href="GHC.Types.Name.html#mkExternalName"><span class="hs-identifier hs-var">mkExternalName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; Unique
</span><a href="GHC.Builtin.Uniques.html#mkCTupleTyConUnique"><span class="hs-identifier hs-var">mkCTupleTyConUnique</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821201"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_CLASSES"><span class="hs-identifier hs-var">gHC_CLASSES</span></a></span><span>
</span><span id="line-918"></span><span>                   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NameSpace -&gt; Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkCTupleOcc"><span class="hs-identifier hs-var">mkCTupleOcc</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="GHC.Types.Name.Occurrence.html#tcName"><span class="hs-identifier hs-var">tcName</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821201"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><a href="GHC.Types.SrcLoc.html#noSrcSpan"><span class="hs-identifier hs-var">noSrcSpan</span></a></span><span>
</span><span id="line-919"></span><span>
</span><span id="line-920"></span><span class="annot"><a href="GHC.Builtin.Types.html#cTupleTyConNames"><span class="hs-identifier hs-type">cTupleTyConNames</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-921"></span><span id="cTupleTyConNames"><span class="annot"><span class="annottext">cTupleTyConNames :: [Name]
</span><a href="GHC.Builtin.Types.html#cTupleTyConNames"><span class="hs-identifier hs-var hs-var">cTupleTyConNames</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Arity -&gt; Name) -&gt; [Arity] -&gt; [Name]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Name
</span><a href="GHC.Builtin.Types.html#cTupleTyConName"><span class="hs-identifier hs-var">cTupleTyConName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Arity] -&gt; [Arity]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">2</span></span><span class="hs-glyph">..</span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_CTUPLE_SIZE"><span class="hs-identifier hs-var">mAX_CTUPLE_SIZE</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-922"></span><span>
</span><span id="line-923"></span><span class="annot"><a href="GHC.Builtin.Types.html#cTupleTyConNameSet"><span class="hs-identifier hs-type">cTupleTyConNameSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-924"></span><span id="cTupleTyConNameSet"><span class="annot"><span class="annottext">cTupleTyConNameSet :: NameSet
</span><a href="GHC.Builtin.Types.html#cTupleTyConNameSet"><span class="hs-identifier hs-var hs-var">cTupleTyConNameSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Name] -&gt; NameSet
</span><a href="GHC.Types.Name.Set.html#mkNameSet"><span class="hs-identifier hs-var">mkNameSet</span></a></span><span> </span><span class="annot"><span class="annottext">[Name]
</span><a href="GHC.Builtin.Types.html#cTupleTyConNames"><span class="hs-identifier hs-var">cTupleTyConNames</span></a></span><span>
</span><span id="line-925"></span><span>
</span><span id="line-926"></span><span class="annot"><a href="GHC.Builtin.Types.html#isCTupleTyConName"><span class="hs-identifier hs-type">isCTupleTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-927"></span><span class="hs-comment">-- Use Type.isCTupleClass where possible</span><span>
</span><span id="line-928"></span><span id="isCTupleTyConName"><span class="annot"><span class="annottext">isCTupleTyConName :: Name -&gt; Bool
</span><a href="GHC.Builtin.Types.html#isCTupleTyConName"><span class="hs-identifier hs-var hs-var">isCTupleTyConName</span></a></span></span><span> </span><span id="local-6989586621680821195"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821195"><span class="hs-identifier hs-var">n</span></a></span></span><span>
</span><span id="line-929"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">ASSERT2</span><span class="hs-special">(</span><span> </span><span class="hs-identifier">isExternalName</span><span> </span><span class="hs-identifier">n</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">ppr</span><span> </span><span class="hs-identifier">n</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-930"></span><span>   </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; Name -&gt; Module
Name -&gt; Module
</span><a href="GHC.Types.Name.html#nameModule"><span class="hs-identifier hs-var">nameModule</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821195"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Module -&gt; Module -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_CLASSES"><span class="hs-identifier hs-var">gHC_CLASSES</span></a></span><span>
</span><span id="line-931"></span><span>   </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821195"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Name -&gt; NameSet -&gt; Bool
</span><a href="GHC.Types.Name.Set.html#elemNameSet"><span class="hs-operator hs-var">`elemNameSet`</span></a></span><span> </span><span class="annot"><span class="annottext">NameSet
</span><a href="GHC.Builtin.Types.html#cTupleTyConNameSet"><span class="hs-identifier hs-var">cTupleTyConNameSet</span></a></span><span>
</span><span id="line-932"></span><span>
</span><span id="line-933"></span><span class="hs-comment">-- | If the given name is that of a constraint tuple, return its arity.</span><span>
</span><span id="line-934"></span><span class="hs-comment">-- Note that this is inefficient.</span><span>
</span><span id="line-935"></span><span class="annot"><a href="GHC.Builtin.Types.html#cTupleTyConNameArity_maybe"><span class="hs-identifier hs-type">cTupleTyConNameArity_maybe</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span>
</span><span id="line-936"></span><span id="cTupleTyConNameArity_maybe"><span class="annot"><span class="annottext">cTupleTyConNameArity_maybe :: Name -&gt; Maybe Arity
</span><a href="GHC.Builtin.Types.html#cTupleTyConNameArity_maybe"><span class="hs-identifier hs-var hs-var">cTupleTyConNameArity_maybe</span></a></span></span><span> </span><span id="local-6989586621680821193"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821193"><span class="hs-identifier hs-var">n</span></a></span></span><span>
</span><span id="line-937"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; Bool
</span><a href="GHC.Builtin.Types.html#isCTupleTyConName"><span class="hs-identifier hs-var">isCTupleTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821193"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe Arity
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-938"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Arity -&gt; Arity) -&gt; Maybe Arity -&gt; Maybe Arity
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity
forall {a}. (Ord a, Num a) =&gt; a -&gt; a
</span><a href="#local-6989586621680821192"><span class="hs-identifier hs-var">adjustArity</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821193"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Name] -&gt; Maybe Arity
forall a. Eq a =&gt; a -&gt; [a] -&gt; Maybe Arity
</span><a href="../../base/src/Data.OldList.html#elemIndex"><span class="hs-operator hs-var">`elemIndex`</span></a></span><span> </span><span class="annot"><span class="annottext">[Name]
</span><a href="GHC.Builtin.Types.html#cTupleTyConNames"><span class="hs-identifier hs-var">cTupleTyConNames</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-939"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-940"></span><span>    </span><span class="hs-comment">-- Since `cTupleTyConNames` jumps straight from the `0` to the `2`</span><span>
</span><span id="line-941"></span><span>    </span><span class="hs-comment">-- case, we have to adjust accordingly our calculated arity.</span><span>
</span><span id="line-942"></span><span>    </span><span id="local-6989586621680821192"><span class="annot"><span class="annottext">adjustArity :: a -&gt; a
</span><a href="#local-6989586621680821192"><span class="hs-identifier hs-var hs-var">adjustArity</span></a></span></span><span> </span><span id="local-6989586621680821185"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680821185"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680821185"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; a -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&gt;</span></span><span> </span><span class="annot"><span class="annottext">a
</span><span class="hs-number">0</span></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680821185"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; a -&gt; a
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><span class="hs-number">1</span></span><span> </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680821185"><span class="hs-identifier hs-var">a</span></a></span><span>
</span><span id="line-943"></span><span>
</span><span id="line-944"></span><span class="annot"><a href="GHC.Builtin.Types.html#cTupleDataConName"><span class="hs-identifier hs-type">cTupleDataConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-945"></span><span id="cTupleDataConName"><span class="annot"><span class="annottext">cTupleDataConName :: Arity -&gt; Name
</span><a href="GHC.Builtin.Types.html#cTupleDataConName"><span class="hs-identifier hs-var hs-var">cTupleDataConName</span></a></span></span><span> </span><span id="local-6989586621680821183"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821183"><span class="hs-identifier hs-var">arity</span></a></span></span><span>
</span><span id="line-946"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unique -&gt; Module -&gt; OccName -&gt; SrcSpan -&gt; Name
</span><a href="GHC.Types.Name.html#mkExternalName"><span class="hs-identifier hs-var">mkExternalName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; Unique
</span><a href="GHC.Builtin.Uniques.html#mkCTupleDataConUnique"><span class="hs-identifier hs-var">mkCTupleDataConUnique</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821183"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_CLASSES"><span class="hs-identifier hs-var">gHC_CLASSES</span></a></span><span>
</span><span id="line-947"></span><span>                   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NameSpace -&gt; Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkCTupleOcc"><span class="hs-identifier hs-var">mkCTupleOcc</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="GHC.Types.Name.Occurrence.html#dataName"><span class="hs-identifier hs-var">dataName</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821183"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><a href="GHC.Types.SrcLoc.html#noSrcSpan"><span class="hs-identifier hs-var">noSrcSpan</span></a></span><span>
</span><span id="line-948"></span><span>
</span><span id="line-949"></span><span class="annot"><a href="GHC.Builtin.Types.html#cTupleDataConNames"><span class="hs-identifier hs-type">cTupleDataConNames</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-950"></span><span id="cTupleDataConNames"><span class="annot"><span class="annottext">cTupleDataConNames :: [Name]
</span><a href="GHC.Builtin.Types.html#cTupleDataConNames"><span class="hs-identifier hs-var hs-var">cTupleDataConNames</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Arity -&gt; Name) -&gt; [Arity] -&gt; [Name]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Name
</span><a href="GHC.Builtin.Types.html#cTupleDataConName"><span class="hs-identifier hs-var">cTupleDataConName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Arity] -&gt; [Arity]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">2</span></span><span class="hs-glyph">..</span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_CTUPLE_SIZE"><span class="hs-identifier hs-var">mAX_CTUPLE_SIZE</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-951"></span><span>
</span><span id="line-952"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-type">tupleTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Boxity"><span class="hs-identifier hs-type">Boxity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-953"></span><span id="tupleTyCon"><span class="annot"><span class="annottext">tupleTyCon :: Boxity -&gt; Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-var hs-var">tupleTyCon</span></a></span></span><span> </span><span id="local-6989586621680821180"><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821180"><span class="hs-identifier hs-var">sort</span></a></span></span><span> </span><span id="local-6989586621680821179"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821179"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821179"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&gt;</span></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_TUPLE_SIZE"><span class="hs-identifier hs-var">mAX_TUPLE_SIZE</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TyCon, DataCon) -&gt; TyCon
forall a b. (a, b) -&gt; a
</span><a href="../../base/src/Data.Tuple.html#fst"><span class="hs-identifier hs-var">fst</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; (TyCon, DataCon)
</span><a href="GHC.Builtin.Types.html#mk_tuple"><span class="hs-identifier hs-var">mk_tuple</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821180"><span class="hs-identifier hs-var">sort</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821179"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span>  </span><span class="hs-comment">-- Build one specially</span><span>
</span><span id="line-954"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-var">tupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span>   </span><span id="local-6989586621680821177"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821177"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TyCon, DataCon) -&gt; TyCon
forall a b. (a, b) -&gt; a
</span><a href="../../base/src/Data.Tuple.html#fst"><span class="hs-identifier hs-var">fst</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Array Arity (TyCon, DataCon)
</span><a href="GHC.Builtin.Types.html#boxedTupleArr"><span class="hs-identifier hs-var">boxedTupleArr</span></a></span><span>   </span><span class="annot"><span class="annottext">Array Arity (TyCon, DataCon) -&gt; Arity -&gt; (TyCon, DataCon)
forall i e. Ix i =&gt; Array i e -&gt; i -&gt; e
</span><a href="../../base/src/GHC.Arr.html#%21"><span class="hs-operator hs-var">!</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821177"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-955"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-var">tupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span id="local-6989586621680821174"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821174"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TyCon, DataCon) -&gt; TyCon
forall a b. (a, b) -&gt; a
</span><a href="../../base/src/Data.Tuple.html#fst"><span class="hs-identifier hs-var">fst</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Array Arity (TyCon, DataCon)
</span><a href="GHC.Builtin.Types.html#unboxedTupleArr"><span class="hs-identifier hs-var">unboxedTupleArr</span></a></span><span> </span><span class="annot"><span class="annottext">Array Arity (TyCon, DataCon) -&gt; Arity -&gt; (TyCon, DataCon)
forall i e. Ix i =&gt; Array i e -&gt; i -&gt; e
</span><a href="../../base/src/GHC.Arr.html#%21"><span class="hs-operator hs-var">!</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821174"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-956"></span><span>
</span><span id="line-957"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleTyConName"><span class="hs-identifier hs-type">tupleTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#TupleSort"><span class="hs-identifier hs-type">TupleSort</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-958"></span><span id="tupleTyConName"><span class="annot"><span class="annottext">tupleTyConName :: TupleSort -&gt; Arity -&gt; Name
</span><a href="GHC.Builtin.Types.html#tupleTyConName"><span class="hs-identifier hs-var hs-var">tupleTyConName</span></a></span></span><span> </span><span class="annot"><span class="annottext">TupleSort
</span><a href="GHC.Types.Basic.html#ConstraintTuple"><span class="hs-identifier hs-var">ConstraintTuple</span></a></span><span> </span><span id="local-6989586621680821171"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821171"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Name
</span><a href="GHC.Builtin.Types.html#cTupleTyConName"><span class="hs-identifier hs-var">cTupleTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821171"><span class="hs-identifier hs-var">a</span></a></span><span>
</span><span id="line-959"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleTyConName"><span class="hs-identifier hs-var">tupleTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">TupleSort
</span><a href="GHC.Types.Basic.html#BoxedTuple"><span class="hs-identifier hs-var">BoxedTuple</span></a></span><span>      </span><span id="local-6989586621680821169"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821169"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Name
</span><a href="GHC.Core.TyCon.html#tyConName"><span class="hs-identifier hs-var hs-var">tyConName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-var">tupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821169"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-960"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleTyConName"><span class="hs-identifier hs-var">tupleTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">TupleSort
</span><a href="GHC.Types.Basic.html#UnboxedTuple"><span class="hs-identifier hs-var">UnboxedTuple</span></a></span><span>    </span><span id="local-6989586621680821167"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821167"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Name
</span><a href="GHC.Core.TyCon.html#tyConName"><span class="hs-identifier hs-var hs-var">tyConName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-var">tupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821167"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-961"></span><span>
</span><span id="line-962"></span><span class="annot"><a href="GHC.Builtin.Types.html#promotedTupleDataCon"><span class="hs-identifier hs-type">promotedTupleDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Boxity"><span class="hs-identifier hs-type">Boxity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-963"></span><span id="promotedTupleDataCon"><span class="annot"><span class="annottext">promotedTupleDataCon :: Boxity -&gt; Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#promotedTupleDataCon"><span class="hs-identifier hs-var hs-var">promotedTupleDataCon</span></a></span></span><span> </span><span id="local-6989586621680821166"><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821166"><span class="hs-identifier hs-var">boxity</span></a></span></span><span> </span><span id="local-6989586621680821165"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821165"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#tupleDataCon"><span class="hs-identifier hs-var">tupleDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821166"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821165"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-964"></span><span>
</span><span id="line-965"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleDataCon"><span class="hs-identifier hs-type">tupleDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Boxity"><span class="hs-identifier hs-type">Boxity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-966"></span><span id="tupleDataCon"><span class="annot"><span class="annottext">tupleDataCon :: Boxity -&gt; Arity -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#tupleDataCon"><span class="hs-identifier hs-var hs-var">tupleDataCon</span></a></span></span><span> </span><span id="local-6989586621680821163"><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821163"><span class="hs-identifier hs-var">sort</span></a></span></span><span> </span><span id="local-6989586621680821162"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821162"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821162"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&gt;</span></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_TUPLE_SIZE"><span class="hs-identifier hs-var">mAX_TUPLE_SIZE</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TyCon, DataCon) -&gt; DataCon
forall a b. (a, b) -&gt; b
</span><a href="../../base/src/Data.Tuple.html#snd"><span class="hs-identifier hs-var">snd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; (TyCon, DataCon)
</span><a href="GHC.Builtin.Types.html#mk_tuple"><span class="hs-identifier hs-var">mk_tuple</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821163"><span class="hs-identifier hs-var">sort</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821162"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span>    </span><span class="hs-comment">-- Build one specially</span><span>
</span><span id="line-967"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleDataCon"><span class="hs-identifier hs-var">tupleDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span>   </span><span id="local-6989586621680821161"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821161"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TyCon, DataCon) -&gt; DataCon
forall a b. (a, b) -&gt; b
</span><a href="../../base/src/Data.Tuple.html#snd"><span class="hs-identifier hs-var">snd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Array Arity (TyCon, DataCon)
</span><a href="GHC.Builtin.Types.html#boxedTupleArr"><span class="hs-identifier hs-var">boxedTupleArr</span></a></span><span>   </span><span class="annot"><span class="annottext">Array Arity (TyCon, DataCon) -&gt; Arity -&gt; (TyCon, DataCon)
forall i e. Ix i =&gt; Array i e -&gt; i -&gt; e
</span><a href="../../base/src/GHC.Arr.html#%21"><span class="hs-operator hs-var">!</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821161"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-968"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleDataCon"><span class="hs-identifier hs-var">tupleDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span id="local-6989586621680821160"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821160"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TyCon, DataCon) -&gt; DataCon
forall a b. (a, b) -&gt; b
</span><a href="../../base/src/Data.Tuple.html#snd"><span class="hs-identifier hs-var">snd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Array Arity (TyCon, DataCon)
</span><a href="GHC.Builtin.Types.html#unboxedTupleArr"><span class="hs-identifier hs-var">unboxedTupleArr</span></a></span><span> </span><span class="annot"><span class="annottext">Array Arity (TyCon, DataCon) -&gt; Arity -&gt; (TyCon, DataCon)
forall i e. Ix i =&gt; Array i e -&gt; i -&gt; e
</span><a href="../../base/src/GHC.Arr.html#%21"><span class="hs-operator hs-var">!</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821160"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-969"></span><span>
</span><span id="line-970"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleDataConName"><span class="hs-identifier hs-type">tupleDataConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Boxity"><span class="hs-identifier hs-type">Boxity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-971"></span><span id="tupleDataConName"><span class="annot"><span class="annottext">tupleDataConName :: Boxity -&gt; Arity -&gt; Name
</span><a href="GHC.Builtin.Types.html#tupleDataConName"><span class="hs-identifier hs-var hs-var">tupleDataConName</span></a></span></span><span> </span><span id="local-6989586621680821159"><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821159"><span class="hs-identifier hs-var">sort</span></a></span></span><span> </span><span id="local-6989586621680821158"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821158"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; Name
</span><a href="GHC.Core.DataCon.html#dataConName"><span class="hs-identifier hs-var">dataConName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#tupleDataCon"><span class="hs-identifier hs-var">tupleDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821159"><span class="hs-identifier hs-var">sort</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821158"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-972"></span><span>
</span><span id="line-973"></span><span class="annot"><a href="GHC.Builtin.Types.html#boxedTupleArr"><span class="hs-identifier hs-type">boxedTupleArr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedTupleArr"><span class="hs-identifier hs-type">unboxedTupleArr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Arr.html#Array"><span class="hs-identifier hs-type">Array</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-974"></span><span id="boxedTupleArr"><span class="annot"><span class="annottext">boxedTupleArr :: Array Arity (TyCon, DataCon)
</span><a href="GHC.Builtin.Types.html#boxedTupleArr"><span class="hs-identifier hs-var hs-var">boxedTupleArr</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Arity, Arity)
-&gt; [(TyCon, DataCon)] -&gt; Array Arity (TyCon, DataCon)
forall i e. Ix i =&gt; (i, i) -&gt; [e] -&gt; Array i e
</span><a href="../../base/src/GHC.Arr.html#listArray"><span class="hs-identifier hs-var">listArray</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_TUPLE_SIZE"><span class="hs-identifier hs-var">mAX_TUPLE_SIZE</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; (TyCon, DataCon)
</span><a href="GHC.Builtin.Types.html#mk_tuple"><span class="hs-identifier hs-var">mk_tuple</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span>   </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821156"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621680821156"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821156"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span class="hs-glyph">..</span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_TUPLE_SIZE"><span class="hs-identifier hs-var">mAX_TUPLE_SIZE</span></a></span><span class="hs-special">]</span><span class="hs-special">]</span><span>
</span><span id="line-975"></span><span id="unboxedTupleArr"><span class="annot"><span class="annottext">unboxedTupleArr :: Array Arity (TyCon, DataCon)
</span><a href="GHC.Builtin.Types.html#unboxedTupleArr"><span class="hs-identifier hs-var hs-var">unboxedTupleArr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Arity, Arity)
-&gt; [(TyCon, DataCon)] -&gt; Array Arity (TyCon, DataCon)
forall i e. Ix i =&gt; (i, i) -&gt; [e] -&gt; Array i e
</span><a href="../../base/src/GHC.Arr.html#listArray"><span class="hs-identifier hs-var">listArray</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_TUPLE_SIZE"><span class="hs-identifier hs-var">mAX_TUPLE_SIZE</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; (TyCon, DataCon)
</span><a href="GHC.Builtin.Types.html#mk_tuple"><span class="hs-identifier hs-var">mk_tuple</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821155"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621680821155"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821155"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span class="hs-glyph">..</span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_TUPLE_SIZE"><span class="hs-identifier hs-var">mAX_TUPLE_SIZE</span></a></span><span class="hs-special">]</span><span class="hs-special">]</span><span>
</span><span id="line-976"></span><span>
</span><span id="line-977"></span><span class="hs-comment">-- | Given the TupleRep/SumRep tycon and list of RuntimeReps of the unboxed</span><span>
</span><span id="line-978"></span><span class="hs-comment">-- tuple/sum arguments, produces the return kind of an unboxed tuple/sum type</span><span>
</span><span id="line-979"></span><span class="hs-comment">-- constructor. @unboxedTupleSumKind [IntRep, LiftedRep] --&gt; TYPE (TupleRep/SumRep</span><span>
</span><span id="line-980"></span><span class="hs-comment">-- [IntRep, LiftedRep])@</span><span>
</span><span id="line-981"></span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedTupleSumKind"><span class="hs-identifier hs-type">unboxedTupleSumKind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span>
</span><span id="line-982"></span><span id="unboxedTupleSumKind"><span class="annot"><span class="annottext">unboxedTupleSumKind :: TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#unboxedTupleSumKind"><span class="hs-identifier hs-var hs-var">unboxedTupleSumKind</span></a></span></span><span> </span><span id="local-6989586621680821153"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821153"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span id="local-6989586621680821152"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821152"><span class="hs-identifier hs-var">rr_tys</span></a></span></span><span>
</span><span id="line-983"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821153"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type -&gt; [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkPromotedListTy"><span class="hs-identifier hs-var">mkPromotedListTy</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier hs-var">runtimeRepTy</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821152"><span class="hs-identifier hs-var">rr_tys</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-984"></span><span>
</span><span id="line-985"></span><span class="hs-comment">-- | Specialization of 'unboxedTupleSumKind' for tuples</span><span>
</span><span id="line-986"></span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedTupleKind"><span class="hs-identifier hs-type">unboxedTupleKind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span>
</span><span id="line-987"></span><span id="unboxedTupleKind"><span class="annot"><span class="annottext">unboxedTupleKind :: [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#unboxedTupleKind"><span class="hs-identifier hs-var hs-var">unboxedTupleKind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#unboxedTupleSumKind"><span class="hs-identifier hs-var">unboxedTupleSumKind</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#tupleRepDataConTyCon"><span class="hs-identifier hs-var">tupleRepDataConTyCon</span></a></span><span>
</span><span id="line-988"></span><span>
</span><span id="line-989"></span><span class="annot"><a href="GHC.Builtin.Types.html#mk_tuple"><span class="hs-identifier hs-type">mk_tuple</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Boxity"><span class="hs-identifier hs-type">Boxity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-990"></span><span id="mk_tuple"><span class="annot"><span class="annottext">mk_tuple :: Boxity -&gt; Arity -&gt; (TyCon, DataCon)
</span><a href="GHC.Builtin.Types.html#mk_tuple"><span class="hs-identifier hs-var hs-var">mk_tuple</span></a></span></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span> </span><span id="local-6989586621680821151"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821151"><span class="hs-identifier hs-var">arity</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821150"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821149"><span class="hs-identifier hs-var">tuple_con</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-991"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-992"></span><span>    </span><span id="local-6989586621680821150"><span class="annot"><span class="annottext">tycon :: TyCon
</span><a href="#local-6989586621680821150"><span class="hs-identifier hs-var hs-var">tycon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; [TyConBinder]
-&gt; Type
-&gt; Arity
-&gt; DataCon
-&gt; TupleSort
-&gt; AlgTyConFlav
-&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkTupleTyCon"><span class="hs-identifier hs-var">mkTupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821147"><span class="hs-identifier hs-var">tc_name</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821146"><span class="hs-identifier hs-var">tc_binders</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821145"><span class="hs-identifier hs-var">tc_res_kind</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821144"><span class="hs-identifier hs-var">tc_arity</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821149"><span class="hs-identifier hs-var">tuple_con</span></a></span><span>
</span><span id="line-993"></span><span>                         </span><span class="annot"><span class="annottext">TupleSort
</span><a href="GHC.Types.Basic.html#BoxedTuple"><span class="hs-identifier hs-var">BoxedTuple</span></a></span><span> </span><span class="annot"><span class="annottext">AlgTyConFlav
</span><a href="#local-6989586621680821143"><span class="hs-identifier hs-var">flavour</span></a></span><span>
</span><span id="line-994"></span><span>
</span><span id="line-995"></span><span>    </span><span id="local-6989586621680821146"><span class="annot"><span class="annottext">tc_binders :: [TyConBinder]
</span><a href="#local-6989586621680821146"><span class="hs-identifier hs-var hs-var">tc_binders</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBinders"><span class="hs-identifier hs-var">mkTemplateAnonTyConBinders</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; Type -&gt; [Type]
forall a. Arity -&gt; a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#replicate"><span class="hs-identifier hs-var">replicate</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821151"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-996"></span><span>    </span><span id="local-6989586621680821145"><span class="annot"><span class="annottext">tc_res_kind :: Type
</span><a href="#local-6989586621680821145"><span class="hs-identifier hs-var hs-var">tc_res_kind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span>
</span><span id="line-997"></span><span>    </span><span id="local-6989586621680821144"><span class="annot"><span class="annottext">tc_arity :: Arity
</span><a href="#local-6989586621680821144"><span class="hs-identifier hs-var hs-var">tc_arity</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821151"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-998"></span><span>    </span><span id="local-6989586621680821143"><span class="annot"><span class="annottext">flavour :: AlgTyConFlav
</span><a href="#local-6989586621680821143"><span class="hs-identifier hs-var hs-var">flavour</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; AlgTyConFlav
</span><a href="GHC.Core.TyCon.html#VanillaAlgTyCon"><span class="hs-identifier hs-var">VanillaAlgTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; Name
</span><a href="GHC.Core.TyCon.html#mkPrelTyConRepName"><span class="hs-identifier hs-var">mkPrelTyConRepName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821147"><span class="hs-identifier hs-var">tc_name</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-999"></span><span>
</span><span id="line-1000"></span><span>    </span><span id="local-6989586621680821140"><span class="annot"><span class="annottext">dc_tvs :: [TyVar]
</span><a href="#local-6989586621680821140"><span class="hs-identifier hs-var hs-var">dc_tvs</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyConBinder] -&gt; [TyVar]
forall tv argf. [VarBndr tv argf] -&gt; [tv]
</span><a href="GHC.Types.Var.html#binderVars"><span class="hs-identifier hs-var">binderVars</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821146"><span class="hs-identifier hs-var">tc_binders</span></a></span><span>
</span><span id="line-1001"></span><span>    </span><span id="local-6989586621680821138"><span class="annot"><span class="annottext">dc_arg_tys :: [Type]
</span><a href="#local-6989586621680821138"><span class="hs-identifier hs-var hs-var">dc_arg_tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyVar] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTys"><span class="hs-identifier hs-var">mkTyVarTys</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821140"><span class="hs-identifier hs-var">dc_tvs</span></a></span><span>
</span><span id="line-1002"></span><span>    </span><span id="local-6989586621680821149"><span class="annot"><span class="annottext">tuple_con :: DataCon
</span><a href="#local-6989586621680821149"><span class="hs-identifier hs-var hs-var">tuple_con</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821137"><span class="hs-identifier hs-var">dc_name</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821140"><span class="hs-identifier hs-var">dc_tvs</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821138"><span class="hs-identifier hs-var">dc_arg_tys</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821150"><span class="hs-identifier hs-var">tycon</span></a></span><span>
</span><span id="line-1003"></span><span>
</span><span id="line-1004"></span><span>    </span><span id="local-6989586621680821136"><span class="annot"><span class="annottext">boxity :: Boxity
</span><a href="#local-6989586621680821136"><span class="hs-identifier hs-var hs-var">boxity</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span>
</span><span id="line-1005"></span><span>    </span><span id="local-6989586621680821135"><span class="annot"><span class="annottext">modu :: Module
</span><a href="#local-6989586621680821135"><span class="hs-identifier hs-var hs-var">modu</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TUPLE"><span class="hs-identifier hs-var">gHC_TUPLE</span></a></span><span>
</span><span id="line-1006"></span><span>    </span><span id="local-6989586621680821147"><span class="annot"><span class="annottext">tc_name :: Name
</span><a href="#local-6989586621680821147"><span class="hs-identifier hs-var hs-var">tc_name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680821135"><span class="hs-identifier hs-var">modu</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NameSpace -&gt; Boxity -&gt; Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkTupleOcc"><span class="hs-identifier hs-var">mkTupleOcc</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="GHC.Types.Name.Occurrence.html#tcName"><span class="hs-identifier hs-var">tcName</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821136"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821151"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821133"><span class="hs-identifier hs-var">tc_uniq</span></a></span><span>
</span><span id="line-1007"></span><span>                         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#ATyCon"><span class="hs-identifier hs-var">ATyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821150"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span>
</span><span id="line-1008"></span><span>    </span><span id="local-6989586621680821137"><span class="annot"><span class="annottext">dc_name :: Name
</span><a href="#local-6989586621680821137"><span class="hs-identifier hs-var hs-var">dc_name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680821135"><span class="hs-identifier hs-var">modu</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NameSpace -&gt; Boxity -&gt; Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkTupleOcc"><span class="hs-identifier hs-var">mkTupleOcc</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="GHC.Types.Name.Occurrence.html#dataName"><span class="hs-identifier hs-var">dataName</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821136"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821151"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821132"><span class="hs-identifier hs-var">dc_uniq</span></a></span><span>
</span><span id="line-1009"></span><span>                            </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ConLike -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#AConLike"><span class="hs-identifier hs-var">AConLike</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; ConLike
</span><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-var">RealDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821149"><span class="hs-identifier hs-var">tuple_con</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span>
</span><span id="line-1010"></span><span>    </span><span id="local-6989586621680821133"><span class="annot"><span class="annottext">tc_uniq :: Unique
</span><a href="#local-6989586621680821133"><span class="hs-identifier hs-var hs-var">tc_uniq</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; Unique
</span><a href="GHC.Builtin.Uniques.html#mkTupleTyConUnique"><span class="hs-identifier hs-var">mkTupleTyConUnique</span></a></span><span>   </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821136"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821151"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-1011"></span><span>    </span><span id="local-6989586621680821132"><span class="annot"><span class="annottext">dc_uniq :: Unique
</span><a href="#local-6989586621680821132"><span class="hs-identifier hs-var hs-var">dc_uniq</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; Unique
</span><a href="GHC.Builtin.Uniques.html#mkTupleDataConUnique"><span class="hs-identifier hs-var">mkTupleDataConUnique</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821136"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821151"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-1012"></span><span>
</span><span id="line-1013"></span><span class="annot"><a href="GHC.Builtin.Types.html#mk_tuple"><span class="hs-identifier hs-var">mk_tuple</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span id="local-6989586621680821129"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821129"><span class="hs-identifier hs-var">arity</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821128"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821127"><span class="hs-identifier hs-var">tuple_con</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1014"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1015"></span><span>    </span><span id="local-6989586621680821128"><span class="annot"><span class="annottext">tycon :: TyCon
</span><a href="#local-6989586621680821128"><span class="hs-identifier hs-var hs-var">tycon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; [TyConBinder]
-&gt; Type
-&gt; Arity
-&gt; DataCon
-&gt; TupleSort
-&gt; AlgTyConFlav
-&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkTupleTyCon"><span class="hs-identifier hs-var">mkTupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821126"><span class="hs-identifier hs-var">tc_name</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821125"><span class="hs-identifier hs-var">tc_binders</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821124"><span class="hs-identifier hs-var">tc_res_kind</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821123"><span class="hs-identifier hs-var">tc_arity</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821127"><span class="hs-identifier hs-var">tuple_con</span></a></span><span>
</span><span id="line-1016"></span><span>                         </span><span class="annot"><span class="annottext">TupleSort
</span><a href="GHC.Types.Basic.html#UnboxedTuple"><span class="hs-identifier hs-var">UnboxedTuple</span></a></span><span> </span><span class="annot"><span class="annottext">AlgTyConFlav
</span><a href="#local-6989586621680821122"><span class="hs-identifier hs-var">flavour</span></a></span><span>
</span><span id="line-1017"></span><span>
</span><span id="line-1018"></span><span>    </span><span class="hs-comment">-- See Note [Unboxed tuple RuntimeRep vars] in GHC.Core.TyCon</span><span>
</span><span id="line-1019"></span><span>    </span><span class="hs-comment">-- Kind:  forall (k1:RuntimeRep) (k2:RuntimeRep). TYPE k1 -&gt; TYPE k2 -&gt; #</span><span>
</span><span id="line-1020"></span><span>    </span><span id="local-6989586621680821125"><span class="annot"><span class="annottext">tc_binders :: [TyConBinder]
</span><a href="#local-6989586621680821125"><span class="hs-identifier hs-var hs-var">tc_binders</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; ([Type] -&gt; [Type]) -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier hs-var">mkTemplateTyConBinders</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; Type -&gt; [Type]
forall a. Arity -&gt; a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#replicate"><span class="hs-identifier hs-var">replicate</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821129"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier hs-var">runtimeRepTy</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1021"></span><span>                                        </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621680821120"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821120"><span class="hs-identifier hs-var">ks</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">(Type -&gt; Type) -&gt; [Type] -&gt; [Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821120"><span class="hs-identifier hs-var">ks</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1022"></span><span>
</span><span id="line-1023"></span><span>    </span><span id="local-6989586621680821124"><span class="annot"><span class="annottext">tc_res_kind :: Type
</span><a href="#local-6989586621680821124"><span class="hs-identifier hs-var hs-var">tc_res_kind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#unboxedTupleKind"><span class="hs-identifier hs-var">unboxedTupleKind</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821119"><span class="hs-identifier hs-var">rr_tys</span></a></span><span>
</span><span id="line-1024"></span><span>
</span><span id="line-1025"></span><span>    </span><span id="local-6989586621680821123"><span class="annot"><span class="annottext">tc_arity :: Arity
</span><a href="#local-6989586621680821123"><span class="hs-identifier hs-var hs-var">tc_arity</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821129"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">2</span></span><span>
</span><span id="line-1026"></span><span>    </span><span id="local-6989586621680821122"><span class="annot"><span class="annottext">flavour :: AlgTyConFlav
</span><a href="#local-6989586621680821122"><span class="hs-identifier hs-var hs-var">flavour</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe Name -&gt; AlgTyConFlav
</span><a href="GHC.Core.TyCon.html#UnboxedAlgTyCon"><span class="hs-identifier hs-var">UnboxedAlgTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">(Maybe Name -&gt; AlgTyConFlav) -&gt; Maybe Name -&gt; AlgTyConFlav
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; Name
</span><a href="GHC.Core.TyCon.html#mkPrelTyConRepName"><span class="hs-identifier hs-var">mkPrelTyConRepName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821126"><span class="hs-identifier hs-var">tc_name</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1027"></span><span>
</span><span id="line-1028"></span><span>    </span><span id="local-6989586621680821114"><span class="annot"><span class="annottext">dc_tvs :: [TyVar]
</span><a href="#local-6989586621680821114"><span class="hs-identifier hs-var hs-var">dc_tvs</span></a></span></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyConBinder] -&gt; [TyVar]
forall tv argf. [VarBndr tv argf] -&gt; [tv]
</span><a href="GHC.Types.Var.html#binderVars"><span class="hs-identifier hs-var">binderVars</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821125"><span class="hs-identifier hs-var">tc_binders</span></a></span><span>
</span><span id="line-1029"></span><span>    </span><span class="hs-special">(</span><span id="local-6989586621680821119"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821119"><span class="hs-identifier hs-var">rr_tys</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680821113"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821113"><span class="hs-identifier hs-var">dc_arg_tys</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Type] -&gt; ([Type], [Type])
forall a. Arity -&gt; [a] -&gt; ([a], [a])
</span><a href="../../base/src/GHC.List.html#splitAt"><span class="hs-identifier hs-var">splitAt</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821129"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyVar] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTys"><span class="hs-identifier hs-var">mkTyVarTys</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821114"><span class="hs-identifier hs-var">dc_tvs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1030"></span><span>    </span><span id="local-6989586621680821127"><span class="annot"><span class="annottext">tuple_con :: DataCon
</span><a href="#local-6989586621680821127"><span class="hs-identifier hs-var hs-var">tuple_con</span></a></span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821111"><span class="hs-identifier hs-var">dc_name</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821114"><span class="hs-identifier hs-var">dc_tvs</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821113"><span class="hs-identifier hs-var">dc_arg_tys</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821128"><span class="hs-identifier hs-var">tycon</span></a></span><span>
</span><span id="line-1031"></span><span>
</span><span id="line-1032"></span><span>    </span><span id="local-6989586621680821110"><span class="annot"><span class="annottext">boxity :: Boxity
</span><a href="#local-6989586621680821110"><span class="hs-identifier hs-var hs-var">boxity</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span>
</span><span id="line-1033"></span><span>    </span><span id="local-6989586621680821109"><span class="annot"><span class="annottext">modu :: Module
</span><a href="#local-6989586621680821109"><span class="hs-identifier hs-var hs-var">modu</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_PRIM"><span class="hs-identifier hs-var">gHC_PRIM</span></a></span><span>
</span><span id="line-1034"></span><span>    </span><span id="local-6989586621680821126"><span class="annot"><span class="annottext">tc_name :: Name
</span><a href="#local-6989586621680821126"><span class="hs-identifier hs-var hs-var">tc_name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680821109"><span class="hs-identifier hs-var">modu</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NameSpace -&gt; Boxity -&gt; Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkTupleOcc"><span class="hs-identifier hs-var">mkTupleOcc</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="GHC.Types.Name.Occurrence.html#tcName"><span class="hs-identifier hs-var">tcName</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821110"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821129"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821107"><span class="hs-identifier hs-var">tc_uniq</span></a></span><span>
</span><span id="line-1035"></span><span>                         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#ATyCon"><span class="hs-identifier hs-var">ATyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821128"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span>
</span><span id="line-1036"></span><span>    </span><span id="local-6989586621680821111"><span class="annot"><span class="annottext">dc_name :: Name
</span><a href="#local-6989586621680821111"><span class="hs-identifier hs-var hs-var">dc_name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680821109"><span class="hs-identifier hs-var">modu</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NameSpace -&gt; Boxity -&gt; Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkTupleOcc"><span class="hs-identifier hs-var">mkTupleOcc</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="GHC.Types.Name.Occurrence.html#dataName"><span class="hs-identifier hs-var">dataName</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821110"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821129"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821106"><span class="hs-identifier hs-var">dc_uniq</span></a></span><span>
</span><span id="line-1037"></span><span>                            </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ConLike -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#AConLike"><span class="hs-identifier hs-var">AConLike</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; ConLike
</span><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-var">RealDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821127"><span class="hs-identifier hs-var">tuple_con</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span>
</span><span id="line-1038"></span><span>    </span><span id="local-6989586621680821107"><span class="annot"><span class="annottext">tc_uniq :: Unique
</span><a href="#local-6989586621680821107"><span class="hs-identifier hs-var hs-var">tc_uniq</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; Unique
</span><a href="GHC.Builtin.Uniques.html#mkTupleTyConUnique"><span class="hs-identifier hs-var">mkTupleTyConUnique</span></a></span><span>   </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821110"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821129"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-1039"></span><span>    </span><span id="local-6989586621680821106"><span class="annot"><span class="annottext">dc_uniq :: Unique
</span><a href="#local-6989586621680821106"><span class="hs-identifier hs-var hs-var">dc_uniq</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; Unique
</span><a href="GHC.Builtin.Uniques.html#mkTupleDataConUnique"><span class="hs-identifier hs-var">mkTupleDataConUnique</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680821110"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821129"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-1040"></span><span>
</span><span id="line-1041"></span><span class="annot"><a href="GHC.Builtin.Types.html#unitTyCon"><span class="hs-identifier hs-type">unitTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1042"></span><span id="unitTyCon"><span class="annot"><span class="annottext">unitTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#unitTyCon"><span class="hs-identifier hs-var hs-var">unitTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-var">tupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span>
</span><span id="line-1043"></span><span>
</span><span id="line-1044"></span><span class="annot"><a href="GHC.Builtin.Types.html#unitTyConKey"><span class="hs-identifier hs-type">unitTyConKey</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span>
</span><span id="line-1045"></span><span id="unitTyConKey"><span class="annot"><span class="annottext">unitTyConKey :: Unique
</span><a href="GHC.Builtin.Types.html#unitTyConKey"><span class="hs-identifier hs-var hs-var">unitTyConKey</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Unique
forall a. Uniquable a =&gt; a -&gt; Unique
</span><a href="GHC.Types.Unique.html#getUnique"><span class="hs-identifier hs-var">getUnique</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#unitTyCon"><span class="hs-identifier hs-var">unitTyCon</span></a></span><span>
</span><span id="line-1046"></span><span>
</span><span id="line-1047"></span><span class="annot"><a href="GHC.Builtin.Types.html#unitDataCon"><span class="hs-identifier hs-type">unitDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1048"></span><span id="unitDataCon"><span class="annot"><span class="annottext">unitDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#unitDataCon"><span class="hs-identifier hs-var hs-var">unitDataCon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[DataCon] -&gt; DataCon
forall a. [a] -&gt; a
</span><a href="../../base/src/GHC.List.html#head"><span class="hs-identifier hs-var">head</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; [DataCon]
</span><a href="GHC.Core.TyCon.html#tyConDataCons"><span class="hs-identifier hs-var">tyConDataCons</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#unitTyCon"><span class="hs-identifier hs-var">unitTyCon</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1049"></span><span>
</span><span id="line-1050"></span><span class="annot"><a href="GHC.Builtin.Types.html#unitDataConId"><span class="hs-identifier hs-type">unitDataConId</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-1051"></span><span id="unitDataConId"><span class="annot"><span class="annottext">unitDataConId :: TyVar
</span><a href="GHC.Builtin.Types.html#unitDataConId"><span class="hs-identifier hs-var hs-var">unitDataConId</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyVar
</span><a href="GHC.Core.DataCon.html#dataConWorkId"><span class="hs-identifier hs-var">dataConWorkId</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#unitDataCon"><span class="hs-identifier hs-var">unitDataCon</span></a></span><span>
</span><span id="line-1052"></span><span>
</span><span id="line-1053"></span><span class="annot"><a href="GHC.Builtin.Types.html#pairTyCon"><span class="hs-identifier hs-type">pairTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1054"></span><span id="pairTyCon"><span class="annot"><span class="annottext">pairTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#pairTyCon"><span class="hs-identifier hs-var hs-var">pairTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-var">tupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">2</span></span><span>
</span><span id="line-1055"></span><span>
</span><span id="line-1056"></span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedUnitTyCon"><span class="hs-identifier hs-type">unboxedUnitTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1057"></span><span id="unboxedUnitTyCon"><span class="annot"><span class="annottext">unboxedUnitTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#unboxedUnitTyCon"><span class="hs-identifier hs-var hs-var">unboxedUnitTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-var">tupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span>
</span><span id="line-1058"></span><span>
</span><span id="line-1059"></span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedUnitDataCon"><span class="hs-identifier hs-type">unboxedUnitDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1060"></span><span id="unboxedUnitDataCon"><span class="annot"><span class="annottext">unboxedUnitDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#unboxedUnitDataCon"><span class="hs-identifier hs-var hs-var">unboxedUnitDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#tupleDataCon"><span class="hs-identifier hs-var">tupleDataCon</span></a></span><span>   </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span>
</span><span id="line-1061"></span><span>
</span><span id="line-1062"></span><span>
</span><span id="line-1063"></span><span class="hs-comment">{- *********************************************************************
*                                                                      *
      Unboxed sums
*                                                                      *
********************************************************************* -}</span><span>
</span><span id="line-1068"></span><span>
</span><span id="line-1069"></span><span class="hs-comment">-- | OccName for n-ary unboxed sum type constructor.</span><span>
</span><span id="line-1070"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkSumTyConOcc"><span class="hs-identifier hs-type">mkSumTyConOcc</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Occurrence.html#OccName"><span class="hs-identifier hs-type">OccName</span></a></span><span>
</span><span id="line-1071"></span><span id="mkSumTyConOcc"><span class="annot"><span class="annottext">mkSumTyConOcc :: Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkSumTyConOcc"><span class="hs-identifier hs-var hs-var">mkSumTyConOcc</span></a></span></span><span> </span><span id="local-6989586621680821101"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821101"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSpace -&gt; [Char] -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkOccName"><span class="hs-identifier hs-var">mkOccName</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="GHC.Types.Name.Occurrence.html#tcName"><span class="hs-identifier hs-var">tcName</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><a href="#local-6989586621680821100"><span class="hs-identifier hs-var">str</span></a></span><span>
</span><span id="line-1072"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1073"></span><span>    </span><span class="hs-comment">-- No need to cache these, the caching is done in mk_sum</span><span>
</span><span id="line-1074"></span><span>    </span><span id="local-6989586621680821100"><span class="annot"><span class="annottext">str :: [Char]
</span><a href="#local-6989586621680821100"><span class="hs-identifier hs-var hs-var">str</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'('</span></span><span> </span><span class="annot"><span class="annottext">Char -&gt; [Char] -&gt; [Char]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'#'</span></span><span> </span><span class="annot"><span class="annottext">Char -&gt; [Char] -&gt; [Char]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><a href="#local-6989586621680821097"><span class="hs-identifier hs-var">bars</span></a></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;#)&quot;</span></span><span>
</span><span id="line-1075"></span><span>    </span><span id="local-6989586621680821097"><span class="annot"><span class="annottext">bars :: [Char]
</span><a href="#local-6989586621680821097"><span class="hs-identifier hs-var hs-var">bars</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Char -&gt; [Char]
forall a. Arity -&gt; a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#replicate"><span class="hs-identifier hs-var">replicate</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821101"><span class="hs-identifier hs-var">n</span></a></span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'|'</span></span><span>
</span><span id="line-1076"></span><span>
</span><span id="line-1077"></span><span class="hs-comment">-- | OccName for i-th alternative of n-ary unboxed sum data constructor.</span><span>
</span><span id="line-1078"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkSumDataConOcc"><span class="hs-identifier hs-type">mkSumDataConOcc</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#ConTag"><span class="hs-identifier hs-type">ConTag</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Occurrence.html#OccName"><span class="hs-identifier hs-type">OccName</span></a></span><span>
</span><span id="line-1079"></span><span id="mkSumDataConOcc"><span class="annot"><span class="annottext">mkSumDataConOcc :: Arity -&gt; Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkSumDataConOcc"><span class="hs-identifier hs-var hs-var">mkSumDataConOcc</span></a></span></span><span> </span><span id="local-6989586621680821092"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821092"><span class="hs-identifier hs-var">alt</span></a></span></span><span> </span><span id="local-6989586621680821091"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821091"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameSpace -&gt; [Char] -&gt; OccName
</span><a href="GHC.Types.Name.Occurrence.html#mkOccName"><span class="hs-identifier hs-var">mkOccName</span></a></span><span> </span><span class="annot"><span class="annottext">NameSpace
</span><a href="GHC.Types.Name.Occurrence.html#dataName"><span class="hs-identifier hs-var">dataName</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><a href="#local-6989586621680821090"><span class="hs-identifier hs-var">str</span></a></span><span>
</span><span id="line-1080"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1081"></span><span>    </span><span class="hs-comment">-- No need to cache these, the caching is done in mk_sum</span><span>
</span><span id="line-1082"></span><span>    </span><span id="local-6989586621680821090"><span class="annot"><span class="annottext">str :: [Char]
</span><a href="#local-6989586621680821090"><span class="hs-identifier hs-var hs-var">str</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'('</span></span><span> </span><span class="annot"><span class="annottext">Char -&gt; [Char] -&gt; [Char]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'#'</span></span><span> </span><span class="annot"><span class="annottext">Char -&gt; [Char] -&gt; [Char]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
</span><a href="#local-6989586621680821084"><span class="hs-identifier hs-var">bars</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821092"><span class="hs-identifier hs-var">alt</span></a></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'_'</span></span><span> </span><span class="annot"><span class="annottext">Char -&gt; [Char] -&gt; [Char]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
</span><a href="#local-6989586621680821084"><span class="hs-identifier hs-var">bars</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821091"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821092"><span class="hs-identifier hs-var">alt</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;#)&quot;</span></span><span>
</span><span id="line-1083"></span><span>    </span><span id="local-6989586621680821084"><span class="annot"><span class="annottext">bars :: Arity -&gt; [Char]
</span><a href="#local-6989586621680821084"><span class="hs-identifier hs-var hs-var">bars</span></a></span></span><span> </span><span id="local-6989586621680821083"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821083"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Char -&gt; [Char]
forall a. Arity -&gt; a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#replicate"><span class="hs-identifier hs-var">replicate</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821083"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'|'</span></span><span>
</span><span id="line-1084"></span><span>
</span><span id="line-1085"></span><span class="hs-comment">-- | Type constructor for n-ary unboxed sum.</span><span>
</span><span id="line-1086"></span><span class="annot"><a href="GHC.Builtin.Types.html#sumTyCon"><span class="hs-identifier hs-type">sumTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1087"></span><span id="sumTyCon"><span class="annot"><span class="annottext">sumTyCon :: Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#sumTyCon"><span class="hs-identifier hs-var hs-var">sumTyCon</span></a></span></span><span> </span><span id="local-6989586621680821082"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821082"><span class="hs-identifier hs-var">arity</span></a></span></span><span>
</span><span id="line-1088"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821082"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&gt;</span></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_SUM_SIZE"><span class="hs-identifier hs-var">mAX_SUM_SIZE</span></a></span><span>
</span><span id="line-1089"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TyCon, Array Arity DataCon) -&gt; TyCon
forall a b. (a, b) -&gt; a
</span><a href="../../base/src/Data.Tuple.html#fst"><span class="hs-identifier hs-var">fst</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; (TyCon, Array Arity DataCon)
</span><a href="GHC.Builtin.Types.html#mk_sum"><span class="hs-identifier hs-var">mk_sum</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821082"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span>  </span><span class="hs-comment">-- Build one specially</span><span>
</span><span id="line-1090"></span><span>
</span><span id="line-1091"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821082"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&lt;</span></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">2</span></span><span>
</span><span id="line-1092"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; TyCon
forall a. [Char] -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;sumTyCon: Arity starts from 2. (arity: &quot;</span></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
forall a. Show a =&gt; a -&gt; [Char]
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821082"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-1093"></span><span>
</span><span id="line-1094"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-1095"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TyCon, Array Arity DataCon) -&gt; TyCon
forall a b. (a, b) -&gt; a
</span><a href="../../base/src/Data.Tuple.html#fst"><span class="hs-identifier hs-var">fst</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Array Arity (TyCon, Array Arity DataCon)
</span><a href="GHC.Builtin.Types.html#unboxedSumArr"><span class="hs-identifier hs-var">unboxedSumArr</span></a></span><span> </span><span class="annot"><span class="annottext">Array Arity (TyCon, Array Arity DataCon)
-&gt; Arity -&gt; (TyCon, Array Arity DataCon)
forall i e. Ix i =&gt; Array i e -&gt; i -&gt; e
</span><a href="../../base/src/GHC.Arr.html#%21"><span class="hs-operator hs-var">!</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821082"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1096"></span><span>
</span><span id="line-1097"></span><span class="hs-comment">-- | Data constructor for i-th alternative of a n-ary unboxed sum.</span><span>
</span><span id="line-1098"></span><span class="annot"><a href="GHC.Builtin.Types.html#sumDataCon"><span class="hs-identifier hs-type">sumDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#ConTag"><span class="hs-identifier hs-type">ConTag</span></a></span><span> </span><span class="hs-comment">-- Alternative</span><span>
</span><span id="line-1099"></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span>  </span><span class="hs-comment">-- Arity</span><span>
</span><span id="line-1100"></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1101"></span><span id="sumDataCon"><span class="annot"><span class="annottext">sumDataCon :: Arity -&gt; Arity -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#sumDataCon"><span class="hs-identifier hs-var hs-var">sumDataCon</span></a></span></span><span> </span><span id="local-6989586621680821076"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821076"><span class="hs-identifier hs-var">alt</span></a></span></span><span> </span><span id="local-6989586621680821075"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821075"><span class="hs-identifier hs-var">arity</span></a></span></span><span>
</span><span id="line-1102"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821076"><span class="hs-identifier hs-var">alt</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&gt;</span></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821075"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-1103"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; DataCon
forall a. [Char] -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;sumDataCon: index out of bounds: alt: &quot;</span></span><span>
</span><span id="line-1104"></span><span>           </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
forall a. Show a =&gt; a -&gt; [Char]
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821076"><span class="hs-identifier hs-var">alt</span></a></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot; &gt; arity &quot;</span></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
forall a. Show a =&gt; a -&gt; [Char]
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821075"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1105"></span><span>
</span><span id="line-1106"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821076"><span class="hs-identifier hs-var">alt</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&lt;=</span></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span>
</span><span id="line-1107"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; DataCon
forall a. [Char] -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;sumDataCon: Alts start from 1. (alt: &quot;</span></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
forall a. Show a =&gt; a -&gt; [Char]
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821076"><span class="hs-identifier hs-var">alt</span></a></span><span>
</span><span id="line-1108"></span><span>           </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;, arity: &quot;</span></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
forall a. Show a =&gt; a -&gt; [Char]
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821075"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-1109"></span><span>
</span><span id="line-1110"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821075"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&lt;</span></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">2</span></span><span>
</span><span id="line-1111"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; DataCon
forall a. [Char] -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;sumDataCon: Arity starts from 2. (alt: &quot;</span></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
forall a. Show a =&gt; a -&gt; [Char]
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821076"><span class="hs-identifier hs-var">alt</span></a></span><span>
</span><span id="line-1112"></span><span>           </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;, arity: &quot;</span></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Char]
forall a. Show a =&gt; a -&gt; [Char]
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821075"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; [Char] -&gt; [Char]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-1113"></span><span>
</span><span id="line-1114"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821075"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&gt;</span></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_SUM_SIZE"><span class="hs-identifier hs-var">mAX_SUM_SIZE</span></a></span><span>
</span><span id="line-1115"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TyCon, Array Arity DataCon) -&gt; Array Arity DataCon
forall a b. (a, b) -&gt; b
</span><a href="../../base/src/Data.Tuple.html#snd"><span class="hs-identifier hs-var">snd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; (TyCon, Array Arity DataCon)
</span><a href="GHC.Builtin.Types.html#mk_sum"><span class="hs-identifier hs-var">mk_sum</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821075"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Array Arity DataCon -&gt; Arity -&gt; DataCon
forall i e. Ix i =&gt; Array i e -&gt; i -&gt; e
</span><a href="../../base/src/GHC.Arr.html#%21"><span class="hs-operator hs-var">!</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821076"><span class="hs-identifier hs-var">alt</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>  </span><span class="hs-comment">-- Build one specially</span><span>
</span><span id="line-1116"></span><span>
</span><span id="line-1117"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-1118"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TyCon, Array Arity DataCon) -&gt; Array Arity DataCon
forall a b. (a, b) -&gt; b
</span><a href="../../base/src/Data.Tuple.html#snd"><span class="hs-identifier hs-var">snd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Array Arity (TyCon, Array Arity DataCon)
</span><a href="GHC.Builtin.Types.html#unboxedSumArr"><span class="hs-identifier hs-var">unboxedSumArr</span></a></span><span> </span><span class="annot"><span class="annottext">Array Arity (TyCon, Array Arity DataCon)
-&gt; Arity -&gt; (TyCon, Array Arity DataCon)
forall i e. Ix i =&gt; Array i e -&gt; i -&gt; e
</span><a href="../../base/src/GHC.Arr.html#%21"><span class="hs-operator hs-var">!</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821075"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Array Arity DataCon -&gt; Arity -&gt; DataCon
forall i e. Ix i =&gt; Array i e -&gt; i -&gt; e
</span><a href="../../base/src/GHC.Arr.html#%21"><span class="hs-operator hs-var">!</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821076"><span class="hs-identifier hs-var">alt</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>
</span><span id="line-1119"></span><span>
</span><span id="line-1120"></span><span class="hs-comment">-- | Cached type and data constructors for sums. The outer array is</span><span>
</span><span id="line-1121"></span><span class="hs-comment">-- indexed by the arity of the sum and the inner array is indexed by</span><span>
</span><span id="line-1122"></span><span class="hs-comment">-- the alternative.</span><span>
</span><span id="line-1123"></span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedSumArr"><span class="hs-identifier hs-type">unboxedSumArr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Arr.html#Array"><span class="hs-identifier hs-type">Array</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Arr.html#Array"><span class="hs-identifier hs-type">Array</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1124"></span><span id="unboxedSumArr"><span class="annot"><span class="annottext">unboxedSumArr :: Array Arity (TyCon, Array Arity DataCon)
</span><a href="GHC.Builtin.Types.html#unboxedSumArr"><span class="hs-identifier hs-var hs-var">unboxedSumArr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Arity, Arity)
-&gt; [(TyCon, Array Arity DataCon)]
-&gt; Array Arity (TyCon, Array Arity DataCon)
forall i e. Ix i =&gt; (i, i) -&gt; [e] -&gt; Array i e
</span><a href="../../base/src/GHC.Arr.html#listArray"><span class="hs-identifier hs-var">listArray</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">2</span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_SUM_SIZE"><span class="hs-identifier hs-var">mAX_SUM_SIZE</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Arity -&gt; (TyCon, Array Arity DataCon)
</span><a href="GHC.Builtin.Types.html#mk_sum"><span class="hs-identifier hs-var">mk_sum</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821073"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621680821073"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821073"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">2</span></span><span class="hs-glyph">..</span><span class="annot"><span class="annottext">Arity
</span><a href="GHC.Settings.Constants.html#mAX_SUM_SIZE"><span class="hs-identifier hs-var">mAX_SUM_SIZE</span></a></span><span class="hs-special">]</span><span class="hs-special">]</span><span>
</span><span id="line-1125"></span><span>
</span><span id="line-1126"></span><span class="hs-comment">-- | Specialization of 'unboxedTupleSumKind' for sums</span><span>
</span><span id="line-1127"></span><span class="annot"><a href="GHC.Builtin.Types.html#unboxedSumKind"><span class="hs-identifier hs-type">unboxedSumKind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span>
</span><span id="line-1128"></span><span id="unboxedSumKind"><span class="annot"><span class="annottext">unboxedSumKind :: [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#unboxedSumKind"><span class="hs-identifier hs-var hs-var">unboxedSumKind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#unboxedTupleSumKind"><span class="hs-identifier hs-var">unboxedTupleSumKind</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#sumRepDataConTyCon"><span class="hs-identifier hs-var">sumRepDataConTyCon</span></a></span><span>
</span><span id="line-1129"></span><span>
</span><span id="line-1130"></span><span class="hs-comment">-- | Create type constructor and data constructors for n-ary unboxed sum.</span><span>
</span><span id="line-1131"></span><span class="annot"><a href="GHC.Builtin.Types.html#mk_sum"><span class="hs-identifier hs-type">mk_sum</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Arity"><span class="hs-identifier hs-type">Arity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Arr.html#Array"><span class="hs-identifier hs-type">Array</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#ConTagZ"><span class="hs-identifier hs-type">ConTagZ</span></a></span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1132"></span><span id="mk_sum"><span class="annot"><span class="annottext">mk_sum :: Arity -&gt; (TyCon, Array Arity DataCon)
</span><a href="GHC.Builtin.Types.html#mk_sum"><span class="hs-identifier hs-var hs-var">mk_sum</span></a></span></span><span> </span><span id="local-6989586621680821071"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821071"><span class="hs-identifier hs-var">arity</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821070"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Array Arity DataCon
</span><a href="#local-6989586621680821069"><span class="hs-identifier hs-var">sum_cons</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1133"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1134"></span><span>    </span><span id="local-6989586621680821070"><span class="annot"><span class="annottext">tycon :: TyCon
</span><a href="#local-6989586621680821070"><span class="hs-identifier hs-var hs-var">tycon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; [TyConBinder]
-&gt; Type
-&gt; Arity
-&gt; [TyVar]
-&gt; [DataCon]
-&gt; AlgTyConFlav
-&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkSumTyCon"><span class="hs-identifier hs-var">mkSumTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821057"><span class="hs-identifier hs-var">tc_name</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821056"><span class="hs-identifier hs-var">tc_binders</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821055"><span class="hs-identifier hs-var">tc_res_kind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821071"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">2</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821054"><span class="hs-identifier hs-var">tyvars</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Array Arity DataCon -&gt; [DataCon]
forall i e. Array i e -&gt; [e]
</span><a href="../../base/src/GHC.Arr.html#elems"><span class="hs-identifier hs-var">elems</span></a></span><span> </span><span class="annot"><span class="annottext">Array Arity DataCon
</span><a href="#local-6989586621680821069"><span class="hs-identifier hs-var">sum_cons</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1135"></span><span>                         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe Name -&gt; AlgTyConFlav
</span><a href="GHC.Core.TyCon.html#UnboxedAlgTyCon"><span class="hs-identifier hs-var">UnboxedAlgTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Name
forall a. Maybe a
</span><a href="#local-6989586621680821052"><span class="hs-identifier hs-var">rep_name</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1136"></span><span>
</span><span id="line-1137"></span><span>    </span><span class="hs-comment">-- Unboxed sums are currently not Typeable due to efficiency concerns. See #13276.</span><span>
</span><span id="line-1138"></span><span>    </span><span id="local-6989586621680821052"><span class="annot"><span class="annottext">rep_name :: Maybe a
</span><a href="#local-6989586621680821052"><span class="hs-identifier hs-var hs-var">rep_name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe a
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-comment">-- Just $ mkPrelTyConRepName tc_name</span><span>
</span><span id="line-1139"></span><span>
</span><span id="line-1140"></span><span>    </span><span id="local-6989586621680821056"><span class="annot"><span class="annottext">tc_binders :: [TyConBinder]
</span><a href="#local-6989586621680821056"><span class="hs-identifier hs-var hs-var">tc_binders</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; ([Type] -&gt; [Type]) -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier hs-var">mkTemplateTyConBinders</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; Type -&gt; [Type]
forall a. Arity -&gt; a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#replicate"><span class="hs-identifier hs-var">replicate</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821071"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier hs-var">runtimeRepTy</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1141"></span><span>                                        </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621680821051"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821051"><span class="hs-identifier hs-var">ks</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">(Type -&gt; Type) -&gt; [Type] -&gt; [Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821051"><span class="hs-identifier hs-var">ks</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1142"></span><span>
</span><span id="line-1143"></span><span>    </span><span id="local-6989586621680821054"><span class="annot"><span class="annottext">tyvars :: [TyVar]
</span><a href="#local-6989586621680821054"><span class="hs-identifier hs-var hs-var">tyvars</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyConBinder] -&gt; [TyVar]
forall tv argf. [VarBndr tv argf] -&gt; [tv]
</span><a href="GHC.Types.Var.html#binderVars"><span class="hs-identifier hs-var">binderVars</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821056"><span class="hs-identifier hs-var">tc_binders</span></a></span><span>
</span><span id="line-1144"></span><span>
</span><span id="line-1145"></span><span>    </span><span id="local-6989586621680821055"><span class="annot"><span class="annottext">tc_res_kind :: Type
</span><a href="#local-6989586621680821055"><span class="hs-identifier hs-var hs-var">tc_res_kind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#unboxedSumKind"><span class="hs-identifier hs-var">unboxedSumKind</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821050"><span class="hs-identifier hs-var">rr_tys</span></a></span><span>
</span><span id="line-1146"></span><span>
</span><span id="line-1147"></span><span>    </span><span class="hs-special">(</span><span id="local-6989586621680821050"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821050"><span class="hs-identifier hs-var">rr_tys</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680821049"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821049"><span class="hs-identifier hs-var">tyvar_tys</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity -&gt; [Type] -&gt; ([Type], [Type])
forall a. Arity -&gt; [a] -&gt; ([a], [a])
</span><a href="../../base/src/GHC.List.html#splitAt"><span class="hs-identifier hs-var">splitAt</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821071"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyVar] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTys"><span class="hs-identifier hs-var">mkTyVarTys</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821054"><span class="hs-identifier hs-var">tyvars</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1148"></span><span>
</span><span id="line-1149"></span><span>    </span><span id="local-6989586621680821057"><span class="annot"><span class="annottext">tc_name :: Name
</span><a href="#local-6989586621680821057"><span class="hs-identifier hs-var hs-var">tc_name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_PRIM"><span class="hs-identifier hs-var">gHC_PRIM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkSumTyConOcc"><span class="hs-identifier hs-var">mkSumTyConOcc</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821071"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680821048"><span class="hs-identifier hs-var">tc_uniq</span></a></span><span>
</span><span id="line-1150"></span><span>                            </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#ATyCon"><span class="hs-identifier hs-var">ATyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821070"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span>
</span><span id="line-1151"></span><span>
</span><span id="line-1152"></span><span>    </span><span id="local-6989586621680821069"><span class="annot"><span class="annottext">sum_cons :: Array Arity DataCon
</span><a href="#local-6989586621680821069"><span class="hs-identifier hs-var hs-var">sum_cons</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Arity, Arity) -&gt; [DataCon] -&gt; Array Arity DataCon
forall i e. Ix i =&gt; (i, i) -&gt; [e] -&gt; Array i e
</span><a href="../../base/src/GHC.Arr.html#listArray"><span class="hs-identifier hs-var">listArray</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821071"><span class="hs-identifier hs-var">arity</span></a></span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Arity -&gt; DataCon
</span><a href="#local-6989586621680821047"><span class="hs-identifier hs-var">sum_con</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821046"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621680821046"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821046"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">0</span></span><span class="hs-glyph">..</span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821071"><span class="hs-identifier hs-var">arity</span></a></span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Arity
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">1</span></span><span class="hs-special">]</span><span class="hs-special">]</span><span>
</span><span id="line-1153"></span><span>    </span><span id="local-6989586621680821047"><span class="annot"><span class="annottext">sum_con :: Arity -&gt; DataCon
</span><a href="#local-6989586621680821047"><span class="hs-identifier hs-var hs-var">sum_con</span></a></span></span><span> </span><span id="local-6989586621680821045"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821045"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621680821044"><span class="annot"><span class="annottext">dc :: DataCon
</span><a href="#local-6989586621680821044"><span class="hs-identifier hs-var hs-var">dc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680821043"><span class="hs-identifier hs-var">dc_name</span></a></span><span>
</span><span id="line-1154"></span><span>                                   </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821054"><span class="hs-identifier hs-var">tyvars</span></a></span><span> </span><span class="hs-comment">-- univ tyvars</span><span>
</span><span id="line-1155"></span><span>                                   </span><span class="hs-special">[</span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680821049"><span class="hs-identifier hs-var">tyvar_tys</span></a></span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; Arity -&gt; Type
forall a. [a] -&gt; Arity -&gt; a
</span><a href="../../base/src/GHC.List.html#%21%21"><span class="hs-operator hs-var">!!</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821045"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-comment">-- arg types</span><span>
</span><span id="line-1156"></span><span>                                   </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821070"><span class="hs-identifier hs-var">tycon</span></a></span><span>
</span><span id="line-1157"></span><span>
</span><span id="line-1158"></span><span>                    </span><span id="local-6989586621680821043"><span class="annot"><span class="annottext">dc_name :: Name
</span><a href="#local-6989586621680821043"><span class="hs-identifier hs-var hs-var">dc_name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; OccName -&gt; Unique -&gt; TyThing -&gt; BuiltInSyntax -&gt; Name
</span><a href="GHC.Types.Name.html#mkWiredInName"><span class="hs-identifier hs-var">mkWiredInName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_PRIM"><span class="hs-identifier hs-var">gHC_PRIM</span></a></span><span>
</span><span id="line-1159"></span><span>                                            </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; OccName
</span><a href="GHC.Builtin.Types.html#mkSumDataConOcc"><span class="hs-identifier hs-var">mkSumDataConOcc</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821045"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821071"><span class="hs-identifier hs-var">arity</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1160"></span><span>                                            </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; Unique
</span><a href="#local-6989586621680821041"><span class="hs-identifier hs-var">dc_uniq</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821045"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1161"></span><span>                                            </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ConLike -&gt; TyThing
</span><a href="GHC.Core.TyCo.Rep.html#AConLike"><span class="hs-identifier hs-var">AConLike</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; ConLike
</span><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-var">RealDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821044"><span class="hs-identifier hs-var">dc</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1162"></span><span>                                            </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span>
</span><span id="line-1163"></span><span>                </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821044"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-1164"></span><span>
</span><span id="line-1165"></span><span>    </span><span id="local-6989586621680821048"><span class="annot"><span class="annottext">tc_uniq :: Unique
</span><a href="#local-6989586621680821048"><span class="hs-identifier hs-var hs-var">tc_uniq</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Unique
</span><a href="GHC.Builtin.Uniques.html#mkSumTyConUnique"><span class="hs-identifier hs-var">mkSumTyConUnique</span></a></span><span>   </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821071"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-1166"></span><span>    </span><span id="local-6989586621680821041"><span class="annot"><span class="annottext">dc_uniq :: Arity -&gt; Unique
</span><a href="#local-6989586621680821041"><span class="hs-identifier hs-var hs-var">dc_uniq</span></a></span></span><span> </span><span id="local-6989586621680821039"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821039"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Arity -&gt; Unique
</span><a href="GHC.Builtin.Uniques.html#mkSumDataConUnique"><span class="hs-identifier hs-var">mkSumDataConUnique</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821039"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680821071"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-1167"></span><span>
</span><span id="line-1168"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
              Equality types and classes
*                                                                      *
********************************************************************* -}</span><span>
</span><span id="line-1174"></span><span>
</span><span id="line-1175"></span><span class="hs-comment">-- See Note [The equality types story] in GHC.Builtin.Types.Prim</span><span>
</span><span id="line-1176"></span><span class="hs-comment">-- ((~~) :: forall k1 k2 (a :: k1) (b :: k2). a -&gt; b -&gt; Constraint)</span><span>
</span><span id="line-1177"></span><span class="hs-comment">--</span><span>
</span><span id="line-1178"></span><span class="hs-comment">-- It's tempting to put functional dependencies on (~~), but it's not</span><span>
</span><span id="line-1179"></span><span class="hs-comment">-- necessary because the functional-dependency coverage check looks</span><span>
</span><span id="line-1180"></span><span class="hs-comment">-- through superclasses, and (~#) is handled in that check.</span><span>
</span><span id="line-1181"></span><span>
</span><span id="line-1182"></span><span class="annot"><a href="GHC.Builtin.Types.html#eqTyCon"><span class="hs-identifier hs-type">eqTyCon</span></a></span><span class="hs-special">,</span><span>   </span><span class="annot"><a href="GHC.Builtin.Types.html#heqTyCon"><span class="hs-identifier hs-type">heqTyCon</span></a></span><span class="hs-special">,</span><span>   </span><span class="annot"><a href="GHC.Builtin.Types.html#coercibleTyCon"><span class="hs-identifier hs-type">coercibleTyCon</span></a></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1183"></span><span class="annot"><a href="GHC.Builtin.Types.html#eqClass"><span class="hs-identifier hs-type">eqClass</span></a></span><span class="hs-special">,</span><span>   </span><span class="annot"><a href="GHC.Builtin.Types.html#heqClass"><span class="hs-identifier hs-type">heqClass</span></a></span><span class="hs-special">,</span><span>   </span><span class="annot"><a href="GHC.Builtin.Types.html#coercibleClass"><span class="hs-identifier hs-type">coercibleClass</span></a></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Class.html#Class"><span class="hs-identifier hs-type">Class</span></a></span><span>
</span><span id="line-1184"></span><span class="annot"><a href="GHC.Builtin.Types.html#eqDataCon"><span class="hs-identifier hs-type">eqDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#heqDataCon"><span class="hs-identifier hs-type">heqDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#coercibleDataCon"><span class="hs-identifier hs-type">coercibleDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1185"></span><span class="annot"><a href="GHC.Builtin.Types.html#eqSCSelId"><span class="hs-identifier hs-type">eqSCSelId</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#heqSCSelId"><span class="hs-identifier hs-type">heqSCSelId</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#coercibleSCSelId"><span class="hs-identifier hs-type">coercibleSCSelId</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-1186"></span><span>
</span><span id="line-1187"></span><span class="hs-special">(</span><span id="eqTyCon"><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#eqTyCon"><span class="hs-identifier hs-var">eqTyCon</span></a></span></span><span class="hs-special">,</span><span> </span><span id="eqClass"><span class="annot"><span class="annottext">Class
</span><a href="GHC.Builtin.Types.html#eqClass"><span class="hs-identifier hs-var">eqClass</span></a></span></span><span class="hs-special">,</span><span> </span><span id="eqDataCon"><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#eqDataCon"><span class="hs-identifier hs-var">eqDataCon</span></a></span></span><span class="hs-special">,</span><span> </span><span id="eqSCSelId"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.html#eqSCSelId"><span class="hs-identifier hs-var">eqSCSelId</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1188"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821037"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Class
</span><a href="#local-6989586621680821036"><span class="hs-identifier hs-var">klass</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821035"><span class="hs-identifier hs-var">datacon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821034"><span class="hs-identifier hs-var">sc_sel_id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1189"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1190"></span><span>    </span><span id="local-6989586621680821037"><span class="annot"><span class="annottext">tycon :: TyCon
</span><a href="#local-6989586621680821037"><span class="hs-identifier hs-var hs-var">tycon</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; [TyConBinder] -&gt; [Role] -&gt; AlgTyConRhs -&gt; Class -&gt; Name -&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkClassTyCon"><span class="hs-identifier hs-var">mkClassTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#eqTyConName"><span class="hs-identifier hs-var">eqTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821032"><span class="hs-identifier hs-var">binders</span></a></span><span> </span><span class="annot"><span class="annottext">[Role]
</span><a href="#local-6989586621680821031"><span class="hs-identifier hs-var">roles</span></a></span><span>
</span><span id="line-1191"></span><span>                             </span><span class="annot"><span class="annottext">AlgTyConRhs
</span><a href="#local-6989586621680821030"><span class="hs-identifier hs-var">rhs</span></a></span><span> </span><span class="annot"><span class="annottext">Class
</span><a href="#local-6989586621680821036"><span class="hs-identifier hs-var">klass</span></a></span><span>
</span><span id="line-1192"></span><span>                             </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; Name
</span><a href="GHC.Core.TyCon.html#mkPrelTyConRepName"><span class="hs-identifier hs-var">mkPrelTyConRepName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#eqTyConName"><span class="hs-identifier hs-var">eqTyConName</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1193"></span><span>    </span><span id="local-6989586621680821036"><span class="annot"><span class="annottext">klass :: Class
</span><a href="#local-6989586621680821036"><span class="hs-identifier hs-var hs-var">klass</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type -&gt; TyVar -&gt; Class
</span><a href="GHC.Builtin.Types.html#mk_class"><span class="hs-identifier hs-var">mk_class</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821037"><span class="hs-identifier hs-var">tycon</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821028"><span class="hs-identifier hs-var">sc_pred</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821034"><span class="hs-identifier hs-var">sc_sel_id</span></a></span><span>
</span><span id="line-1194"></span><span>    </span><span id="local-6989586621680821035"><span class="annot"><span class="annottext">datacon :: DataCon
</span><a href="#local-6989586621680821035"><span class="hs-identifier hs-var hs-var">datacon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Scaled Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataConW"><span class="hs-identifier hs-var">pcDataConW</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#eqDataConName"><span class="hs-identifier hs-var">eqDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821027"><span class="hs-identifier hs-var">tvs</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type -&gt; Scaled Type
forall a. a -&gt; Scaled a
</span><a href="GHC.Core.Type.html#unrestricted"><span class="hs-identifier hs-var">unrestricted</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821028"><span class="hs-identifier hs-var">sc_pred</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821037"><span class="hs-identifier hs-var">tycon</span></a></span><span>
</span><span id="line-1195"></span><span>
</span><span id="line-1196"></span><span>    </span><span class="hs-comment">-- Kind: forall k. k -&gt; k -&gt; Constraint</span><span>
</span><span id="line-1197"></span><span>    </span><span id="local-6989586621680821032"><span class="annot"><span class="annottext">binders :: [TyConBinder]
</span><a href="#local-6989586621680821032"><span class="hs-identifier hs-var hs-var">binders</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; ([Type] -&gt; [Type]) -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier hs-var">mkTemplateTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-special">[</span><span id="local-6989586621680821025"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821025"><span class="hs-identifier hs-var">k</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821025"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821025"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-1198"></span><span>    </span><span id="local-6989586621680821031"><span class="annot"><span class="annottext">roles :: [Role]
</span><a href="#local-6989586621680821031"><span class="hs-identifier hs-var hs-var">roles</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1199"></span><span>    </span><span id="local-6989586621680821030"><span class="annot"><span class="annottext">rhs :: AlgTyConRhs
</span><a href="#local-6989586621680821030"><span class="hs-identifier hs-var hs-var">rhs</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[DataCon] -&gt; AlgTyConRhs
</span><a href="GHC.Core.TyCon.html#mkDataTyConRhs"><span class="hs-identifier hs-var">mkDataTyConRhs</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821035"><span class="hs-identifier hs-var">datacon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1200"></span><span>
</span><span id="line-1201"></span><span>    </span><span id="local-6989586621680821027"><span class="annot"><span class="annottext">tvs :: [TyVar]
</span><a href="#local-6989586621680821027"><span class="hs-identifier hs-var">tvs</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">[</span><span id="local-6989586621680821023"><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821023"><span class="hs-identifier hs-var">k</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680821022"><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821022"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680821021"><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821021"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyConBinder] -&gt; [TyVar]
forall tv argf. [VarBndr tv argf] -&gt; [tv]
</span><a href="GHC.Types.Var.html#binderVars"><span class="hs-identifier hs-var">binderVars</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821032"><span class="hs-identifier hs-var">binders</span></a></span><span>
</span><span id="line-1202"></span><span>    </span><span id="local-6989586621680821028"><span class="annot"><span class="annottext">sc_pred :: Type
</span><a href="#local-6989586621680821028"><span class="hs-identifier hs-var hs-var">sc_pred</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqPrimTyCon"><span class="hs-identifier hs-var">eqPrimTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyVar] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTys"><span class="hs-identifier hs-var">mkTyVarTys</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821023"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821023"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821022"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821021"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-1203"></span><span>    </span><span id="local-6989586621680821034"><span class="annot"><span class="annottext">sc_sel_id :: TyVar
</span><a href="#local-6989586621680821034"><span class="hs-identifier hs-var hs-var">sc_sel_id</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Class -&gt; TyVar
</span><a href="GHC.Types.Id.Make.html#mkDictSelId"><span class="hs-identifier hs-var">mkDictSelId</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#eqSCSelIdName"><span class="hs-identifier hs-var">eqSCSelIdName</span></a></span><span> </span><span class="annot"><span class="annottext">Class
</span><a href="#local-6989586621680821036"><span class="hs-identifier hs-var">klass</span></a></span><span>
</span><span id="line-1204"></span><span>
</span><span id="line-1205"></span><span class="hs-special">(</span><span id="heqTyCon"><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#heqTyCon"><span class="hs-identifier hs-var">heqTyCon</span></a></span></span><span class="hs-special">,</span><span> </span><span id="heqClass"><span class="annot"><span class="annottext">Class
</span><a href="GHC.Builtin.Types.html#heqClass"><span class="hs-identifier hs-var">heqClass</span></a></span></span><span class="hs-special">,</span><span> </span><span id="heqDataCon"><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#heqDataCon"><span class="hs-identifier hs-var">heqDataCon</span></a></span></span><span class="hs-special">,</span><span> </span><span id="heqSCSelId"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.html#heqSCSelId"><span class="hs-identifier hs-var">heqSCSelId</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1206"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821019"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Class
</span><a href="#local-6989586621680821018"><span class="hs-identifier hs-var">klass</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821017"><span class="hs-identifier hs-var">datacon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821016"><span class="hs-identifier hs-var">sc_sel_id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1207"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1208"></span><span>    </span><span id="local-6989586621680821019"><span class="annot"><span class="annottext">tycon :: TyCon
</span><a href="#local-6989586621680821019"><span class="hs-identifier hs-var hs-var">tycon</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; [TyConBinder] -&gt; [Role] -&gt; AlgTyConRhs -&gt; Class -&gt; Name -&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkClassTyCon"><span class="hs-identifier hs-var">mkClassTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#heqTyConName"><span class="hs-identifier hs-var">heqTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821015"><span class="hs-identifier hs-var">binders</span></a></span><span> </span><span class="annot"><span class="annottext">[Role]
</span><a href="#local-6989586621680821014"><span class="hs-identifier hs-var">roles</span></a></span><span>
</span><span id="line-1209"></span><span>                             </span><span class="annot"><span class="annottext">AlgTyConRhs
</span><a href="#local-6989586621680821013"><span class="hs-identifier hs-var">rhs</span></a></span><span> </span><span class="annot"><span class="annottext">Class
</span><a href="#local-6989586621680821018"><span class="hs-identifier hs-var">klass</span></a></span><span>
</span><span id="line-1210"></span><span>                             </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; Name
</span><a href="GHC.Core.TyCon.html#mkPrelTyConRepName"><span class="hs-identifier hs-var">mkPrelTyConRepName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#heqTyConName"><span class="hs-identifier hs-var">heqTyConName</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1211"></span><span>    </span><span id="local-6989586621680821018"><span class="annot"><span class="annottext">klass :: Class
</span><a href="#local-6989586621680821018"><span class="hs-identifier hs-var hs-var">klass</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type -&gt; TyVar -&gt; Class
</span><a href="GHC.Builtin.Types.html#mk_class"><span class="hs-identifier hs-var">mk_class</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821019"><span class="hs-identifier hs-var">tycon</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821012"><span class="hs-identifier hs-var">sc_pred</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821016"><span class="hs-identifier hs-var">sc_sel_id</span></a></span><span>
</span><span id="line-1212"></span><span>    </span><span id="local-6989586621680821017"><span class="annot"><span class="annottext">datacon :: DataCon
</span><a href="#local-6989586621680821017"><span class="hs-identifier hs-var hs-var">datacon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Scaled Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataConW"><span class="hs-identifier hs-var">pcDataConW</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#heqDataConName"><span class="hs-identifier hs-var">heqDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821011"><span class="hs-identifier hs-var">tvs</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type -&gt; Scaled Type
forall a. a -&gt; Scaled a
</span><a href="GHC.Core.Type.html#unrestricted"><span class="hs-identifier hs-var">unrestricted</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821012"><span class="hs-identifier hs-var">sc_pred</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821019"><span class="hs-identifier hs-var">tycon</span></a></span><span>
</span><span id="line-1213"></span><span>
</span><span id="line-1214"></span><span>    </span><span class="hs-comment">-- Kind: forall k1 k2. k1 -&gt; k2 -&gt; Constraint</span><span>
</span><span id="line-1215"></span><span>    </span><span id="local-6989586621680821015"><span class="annot"><span class="annottext">binders :: [TyConBinder]
</span><a href="#local-6989586621680821015"><span class="hs-identifier hs-var hs-var">binders</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; ([Type] -&gt; [Type]) -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier hs-var">mkTemplateTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [Type]
forall a. a -&gt; a
</span><a href="../../base/src/GHC.Base.html#id"><span class="hs-identifier hs-var">id</span></a></span><span>
</span><span id="line-1216"></span><span>    </span><span id="local-6989586621680821014"><span class="annot"><span class="annottext">roles :: [Role]
</span><a href="#local-6989586621680821014"><span class="hs-identifier hs-var hs-var">roles</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1217"></span><span>    </span><span id="local-6989586621680821013"><span class="annot"><span class="annottext">rhs :: AlgTyConRhs
</span><a href="#local-6989586621680821013"><span class="hs-identifier hs-var hs-var">rhs</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[DataCon] -&gt; AlgTyConRhs
</span><a href="GHC.Core.TyCon.html#mkDataTyConRhs"><span class="hs-identifier hs-var">mkDataTyConRhs</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821017"><span class="hs-identifier hs-var">datacon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1218"></span><span>
</span><span id="line-1219"></span><span>    </span><span id="local-6989586621680821011"><span class="annot"><span class="annottext">tvs :: [TyVar]
</span><a href="#local-6989586621680821011"><span class="hs-identifier hs-var hs-var">tvs</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyConBinder] -&gt; [TyVar]
forall tv argf. [VarBndr tv argf] -&gt; [tv]
</span><a href="GHC.Types.Var.html#binderVars"><span class="hs-identifier hs-var">binderVars</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821015"><span class="hs-identifier hs-var">binders</span></a></span><span>
</span><span id="line-1220"></span><span>    </span><span id="local-6989586621680821012"><span class="annot"><span class="annottext">sc_pred :: Type
</span><a href="#local-6989586621680821012"><span class="hs-identifier hs-var hs-var">sc_pred</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqPrimTyCon"><span class="hs-identifier hs-var">eqPrimTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyVar] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTys"><span class="hs-identifier hs-var">mkTyVarTys</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821011"><span class="hs-identifier hs-var">tvs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1221"></span><span>    </span><span id="local-6989586621680821016"><span class="annot"><span class="annottext">sc_sel_id :: TyVar
</span><a href="#local-6989586621680821016"><span class="hs-identifier hs-var hs-var">sc_sel_id</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Class -&gt; TyVar
</span><a href="GHC.Types.Id.Make.html#mkDictSelId"><span class="hs-identifier hs-var">mkDictSelId</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#heqSCSelIdName"><span class="hs-identifier hs-var">heqSCSelIdName</span></a></span><span> </span><span class="annot"><span class="annottext">Class
</span><a href="#local-6989586621680821018"><span class="hs-identifier hs-var">klass</span></a></span><span>
</span><span id="line-1222"></span><span>
</span><span id="line-1223"></span><span class="hs-special">(</span><span id="coercibleTyCon"><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#coercibleTyCon"><span class="hs-identifier hs-var">coercibleTyCon</span></a></span></span><span class="hs-special">,</span><span> </span><span id="coercibleClass"><span class="annot"><span class="annottext">Class
</span><a href="GHC.Builtin.Types.html#coercibleClass"><span class="hs-identifier hs-var">coercibleClass</span></a></span></span><span class="hs-special">,</span><span> </span><span id="coercibleDataCon"><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#coercibleDataCon"><span class="hs-identifier hs-var">coercibleDataCon</span></a></span></span><span class="hs-special">,</span><span> </span><span id="coercibleSCSelId"><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.html#coercibleSCSelId"><span class="hs-identifier hs-var">coercibleSCSelId</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1224"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821009"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Class
</span><a href="#local-6989586621680821008"><span class="hs-identifier hs-var">klass</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821007"><span class="hs-identifier hs-var">datacon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821006"><span class="hs-identifier hs-var">sc_sel_id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1225"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1226"></span><span>    </span><span id="local-6989586621680821009"><span class="annot"><span class="annottext">tycon :: TyCon
</span><a href="#local-6989586621680821009"><span class="hs-identifier hs-var hs-var">tycon</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; [TyConBinder] -&gt; [Role] -&gt; AlgTyConRhs -&gt; Class -&gt; Name -&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkClassTyCon"><span class="hs-identifier hs-var">mkClassTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#coercibleTyConName"><span class="hs-identifier hs-var">coercibleTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821005"><span class="hs-identifier hs-var">binders</span></a></span><span> </span><span class="annot"><span class="annottext">[Role]
</span><a href="#local-6989586621680821004"><span class="hs-identifier hs-var">roles</span></a></span><span>
</span><span id="line-1227"></span><span>                             </span><span class="annot"><span class="annottext">AlgTyConRhs
</span><a href="#local-6989586621680821003"><span class="hs-identifier hs-var">rhs</span></a></span><span> </span><span class="annot"><span class="annottext">Class
</span><a href="#local-6989586621680821008"><span class="hs-identifier hs-var">klass</span></a></span><span>
</span><span id="line-1228"></span><span>                             </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; Name
</span><a href="GHC.Core.TyCon.html#mkPrelTyConRepName"><span class="hs-identifier hs-var">mkPrelTyConRepName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#coercibleTyConName"><span class="hs-identifier hs-var">coercibleTyConName</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1229"></span><span>    </span><span id="local-6989586621680821008"><span class="annot"><span class="annottext">klass :: Class
</span><a href="#local-6989586621680821008"><span class="hs-identifier hs-var hs-var">klass</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type -&gt; TyVar -&gt; Class
</span><a href="GHC.Builtin.Types.html#mk_class"><span class="hs-identifier hs-var">mk_class</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821009"><span class="hs-identifier hs-var">tycon</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821002"><span class="hs-identifier hs-var">sc_pred</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680821006"><span class="hs-identifier hs-var">sc_sel_id</span></a></span><span>
</span><span id="line-1230"></span><span>    </span><span id="local-6989586621680821007"><span class="annot"><span class="annottext">datacon :: DataCon
</span><a href="#local-6989586621680821007"><span class="hs-identifier hs-var hs-var">datacon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Scaled Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataConW"><span class="hs-identifier hs-var">pcDataConW</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#coercibleDataConName"><span class="hs-identifier hs-var">coercibleDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="#local-6989586621680821001"><span class="hs-identifier hs-var">tvs</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type -&gt; Scaled Type
forall a. a -&gt; Scaled a
</span><a href="GHC.Core.Type.html#unrestricted"><span class="hs-identifier hs-var">unrestricted</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821002"><span class="hs-identifier hs-var">sc_pred</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680821009"><span class="hs-identifier hs-var">tycon</span></a></span><span>
</span><span id="line-1231"></span><span>
</span><span id="line-1232"></span><span>    </span><span class="hs-comment">-- Kind: forall k. k -&gt; k -&gt; Constraint</span><span>
</span><span id="line-1233"></span><span>    </span><span id="local-6989586621680821005"><span class="annot"><span class="annottext">binders :: [TyConBinder]
</span><a href="#local-6989586621680821005"><span class="hs-identifier hs-var hs-var">binders</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; ([Type] -&gt; [Type]) -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateTyConBinders"><span class="hs-identifier hs-var">mkTemplateTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-special">[</span><span id="local-6989586621680821000"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821000"><span class="hs-identifier hs-var">k</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821000"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680821000"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-1234"></span><span>    </span><span id="local-6989586621680821004"><span class="annot"><span class="annottext">roles :: [Role]
</span><a href="#local-6989586621680821004"><span class="hs-identifier hs-var hs-var">roles</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Nominal"><span class="hs-identifier hs-var">Nominal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="GHC.Core.Coercion.Axiom.html#Representational"><span class="hs-identifier hs-var">Representational</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1235"></span><span>    </span><span id="local-6989586621680821003"><span class="annot"><span class="annottext">rhs :: AlgTyConRhs
</span><a href="#local-6989586621680821003"><span class="hs-identifier hs-var hs-var">rhs</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[DataCon] -&gt; AlgTyConRhs
</span><a href="GHC.Core.TyCon.html#mkDataTyConRhs"><span class="hs-identifier hs-var">mkDataTyConRhs</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680821007"><span class="hs-identifier hs-var">datacon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1236"></span><span>
</span><span id="line-1237"></span><span>    </span><span id="local-6989586621680821001"><span class="annot"><span class="annottext">tvs :: [TyVar]
</span><a href="#local-6989586621680821001"><span class="hs-identifier hs-var">tvs</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">[</span><span id="local-6989586621680820999"><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680820999"><span class="hs-identifier hs-var">k</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680820998"><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680820998"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680820997"><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680820997"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyConBinder] -&gt; [TyVar]
forall tv argf. [VarBndr tv argf] -&gt; [tv]
</span><a href="GHC.Types.Var.html#binderVars"><span class="hs-identifier hs-var">binderVars</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680821005"><span class="hs-identifier hs-var">binders</span></a></span><span>
</span><span id="line-1238"></span><span>    </span><span id="local-6989586621680821002"><span class="annot"><span class="annottext">sc_pred :: Type
</span><a href="#local-6989586621680821002"><span class="hs-identifier hs-var hs-var">sc_pred</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyCon"><span class="hs-identifier hs-var">eqReprPrimTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[TyVar] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Rep.html#mkTyVarTys"><span class="hs-identifier hs-var">mkTyVarTys</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680820999"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680820999"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680820998"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680820997"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-1239"></span><span>    </span><span id="local-6989586621680821006"><span class="annot"><span class="annottext">sc_sel_id :: TyVar
</span><a href="#local-6989586621680821006"><span class="hs-identifier hs-var hs-var">sc_sel_id</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Class -&gt; TyVar
</span><a href="GHC.Types.Id.Make.html#mkDictSelId"><span class="hs-identifier hs-var">mkDictSelId</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#coercibleSCSelIdName"><span class="hs-identifier hs-var">coercibleSCSelIdName</span></a></span><span> </span><span class="annot"><span class="annottext">Class
</span><a href="#local-6989586621680821008"><span class="hs-identifier hs-var">klass</span></a></span><span>
</span><span id="line-1240"></span><span>
</span><span id="line-1241"></span><span class="annot"><a href="GHC.Builtin.Types.html#mk_class"><span class="hs-identifier hs-type">mk_class</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#PredType"><span class="hs-identifier hs-type">PredType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Class.html#Class"><span class="hs-identifier hs-type">Class</span></a></span><span>
</span><span id="line-1242"></span><span id="mk_class"><span class="annot"><span class="annottext">mk_class :: TyCon -&gt; Type -&gt; TyVar -&gt; Class
</span><a href="GHC.Builtin.Types.html#mk_class"><span class="hs-identifier hs-var hs-var">mk_class</span></a></span></span><span> </span><span id="local-6989586621680820994"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680820994"><span class="hs-identifier hs-var">tycon</span></a></span></span><span> </span><span id="local-6989586621680820993"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820993"><span class="hs-identifier hs-var">sc_pred</span></a></span></span><span> </span><span id="local-6989586621680820992"><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680820992"><span class="hs-identifier hs-var">sc_sel_id</span></a></span></span><span>
</span><span id="line-1243"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; [TyVar]
-&gt; [FunDep TyVar]
-&gt; [Type]
-&gt; [TyVar]
-&gt; [ClassATItem]
-&gt; [ClassOpItem]
-&gt; ClassMinimalDef
-&gt; TyCon
-&gt; Class
</span><a href="GHC.Core.Class.html#mkClass"><span class="hs-identifier hs-var">mkClass</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; Name
</span><a href="GHC.Core.TyCon.html#tyConName"><span class="hs-identifier hs-var hs-var">tyConName</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680820994"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; [TyVar]
</span><a href="GHC.Core.TyCon.html#tyConTyVars"><span class="hs-identifier hs-var hs-var">tyConTyVars</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680820994"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820993"><span class="hs-identifier hs-var">sc_pred</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">TyVar
</span><a href="#local-6989586621680820992"><span class="hs-identifier hs-var">sc_sel_id</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1244"></span><span>            </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[LBooleanFormula Name] -&gt; ClassMinimalDef
forall a. Eq a =&gt; [LBooleanFormula a] -&gt; BooleanFormula a
</span><a href="GHC.Data.BooleanFormula.html#mkAnd"><span class="hs-identifier hs-var">mkAnd</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680820994"><span class="hs-identifier hs-var">tycon</span></a></span><span>
</span><span id="line-1245"></span><span>
</span><span id="line-1246"></span><span>
</span><span id="line-1247"></span><span>
</span><span id="line-1248"></span><span class="hs-comment">{- *********************************************************************
*                                                                      *
                Multiplicity Polymorphism
*                                                                      *
********************************************************************* -}</span><span>
</span><span id="line-1253"></span><span>
</span><span id="line-1254"></span><span class="hs-comment">{- Multiplicity polymorphism is implemented very similarly to levity
 polymorphism. We write in the multiplicity kind and the One and Many
 types which can appear in user programs. These are defined properly in GHC.Types.

data Multiplicity = One | Many
-}</span><span>
</span><span id="line-1260"></span><span>
</span><span id="line-1261"></span><span class="annot"><a href="GHC.Builtin.Types.html#multiplicityTy"><span class="hs-identifier hs-type">multiplicityTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1262"></span><span id="multiplicityTy"><span class="annot"><span class="annottext">multiplicityTy :: Type
</span><a href="GHC.Builtin.Types.html#multiplicityTy"><span class="hs-identifier hs-var hs-var">multiplicityTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#multiplicityTyCon"><span class="hs-identifier hs-var">multiplicityTyCon</span></a></span><span>
</span><span id="line-1263"></span><span>
</span><span id="line-1264"></span><span class="annot"><a href="GHC.Builtin.Types.html#multiplicityTyCon"><span class="hs-identifier hs-type">multiplicityTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1265"></span><span id="multiplicityTyCon"><span class="annot"><span class="annottext">multiplicityTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#multiplicityTyCon"><span class="hs-identifier hs-var hs-var">multiplicityTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#multiplicityTyConName"><span class="hs-identifier hs-var">multiplicityTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1266"></span><span>                          </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#oneDataCon"><span class="hs-identifier hs-var">oneDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#manyDataCon"><span class="hs-identifier hs-var">manyDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1267"></span><span>
</span><span id="line-1268"></span><span class="annot"><a href="GHC.Builtin.Types.html#oneDataCon"><span class="hs-identifier hs-type">oneDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#manyDataCon"><span class="hs-identifier hs-type">manyDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1269"></span><span id="oneDataCon"><span class="annot"><span class="annottext">oneDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#oneDataCon"><span class="hs-identifier hs-var hs-var">oneDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#oneDataConName"><span class="hs-identifier hs-var">oneDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#multiplicityTyCon"><span class="hs-identifier hs-var">multiplicityTyCon</span></a></span><span>
</span><span id="line-1270"></span><span id="manyDataCon"><span class="annot"><span class="annottext">manyDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#manyDataCon"><span class="hs-identifier hs-var hs-var">manyDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#manyDataConName"><span class="hs-identifier hs-var">manyDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#multiplicityTyCon"><span class="hs-identifier hs-var">multiplicityTyCon</span></a></span><span>
</span><span id="line-1271"></span><span>
</span><span id="line-1272"></span><span class="annot"><a href="GHC.Builtin.Types.html#oneDataConTy"><span class="hs-identifier hs-type">oneDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#manyDataConTy"><span class="hs-identifier hs-type">manyDataConTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1273"></span><span id="oneDataConTy"><span class="annot"><span class="annottext">oneDataConTy :: Type
</span><a href="GHC.Builtin.Types.html#oneDataConTy"><span class="hs-identifier hs-var hs-var">oneDataConTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#oneDataConTyCon"><span class="hs-identifier hs-var">oneDataConTyCon</span></a></span><span>
</span><span id="line-1274"></span><span id="manyDataConTy"><span class="annot"><span class="annottext">manyDataConTy :: Type
</span><a href="GHC.Builtin.Types.html#manyDataConTy"><span class="hs-identifier hs-var hs-var">manyDataConTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#manyDataConTyCon"><span class="hs-identifier hs-var">manyDataConTyCon</span></a></span><span>
</span><span id="line-1275"></span><span>
</span><span id="line-1276"></span><span class="annot"><a href="GHC.Builtin.Types.html#oneDataConTyCon"><span class="hs-identifier hs-type">oneDataConTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#manyDataConTyCon"><span class="hs-identifier hs-type">manyDataConTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1277"></span><span id="oneDataConTyCon"><span class="annot"><span class="annottext">oneDataConTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#oneDataConTyCon"><span class="hs-identifier hs-var hs-var">oneDataConTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#oneDataCon"><span class="hs-identifier hs-var">oneDataCon</span></a></span><span>
</span><span id="line-1278"></span><span id="manyDataConTyCon"><span class="annot"><span class="annottext">manyDataConTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#manyDataConTyCon"><span class="hs-identifier hs-var hs-var">manyDataConTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#manyDataCon"><span class="hs-identifier hs-var">manyDataCon</span></a></span><span>
</span><span id="line-1279"></span><span>
</span><span id="line-1280"></span><span class="annot"><a href="GHC.Builtin.Types.html#multMulTyConName"><span class="hs-identifier hs-type">multMulTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-1281"></span><span id="multMulTyConName"><span class="annot"><span class="annottext">multMulTyConName :: Name
</span><a href="GHC.Builtin.Types.html#multMulTyConName"><span class="hs-identifier hs-var hs-var">multMulTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-1282"></span><span>    </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;MultMul&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#multMulTyConKey"><span class="hs-identifier hs-var">multMulTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#multMulTyCon"><span class="hs-identifier hs-var">multMulTyCon</span></a></span><span>
</span><span id="line-1283"></span><span>
</span><span id="line-1284"></span><span class="annot"><a href="GHC.Builtin.Types.html#multMulTyCon"><span class="hs-identifier hs-type">multMulTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1285"></span><span id="multMulTyCon"><span class="annot"><span class="annottext">multMulTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#multMulTyCon"><span class="hs-identifier hs-var hs-var">multMulTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name
-&gt; [TyConBinder]
-&gt; Type
-&gt; Maybe Name
-&gt; FamTyConFlav
-&gt; Maybe Class
-&gt; Injectivity
-&gt; TyCon
</span><a href="GHC.Core.TyCon.html#mkFamilyTyCon"><span class="hs-identifier hs-var">mkFamilyTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#multMulTyConName"><span class="hs-identifier hs-var">multMulTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680820988"><span class="hs-identifier hs-var">binders</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#multiplicityTy"><span class="hs-identifier hs-var">multiplicityTy</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Name
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-1286"></span><span>                         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BuiltInSynFamily -&gt; FamTyConFlav
</span><a href="GHC.Core.TyCon.html#BuiltInSynFamTyCon"><span class="hs-identifier hs-var">BuiltInSynFamTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSynFamily
</span><a href="GHC.Core.Coercion.Axiom.html#trivialBuiltInFamily"><span class="hs-identifier hs-var">trivialBuiltInFamily</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1287"></span><span>                         </span><span class="annot"><span class="annottext">Maybe Class
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-1288"></span><span>                         </span><span class="annot"><span class="annottext">Injectivity
</span><a href="GHC.Core.TyCon.html#NotInjective"><span class="hs-identifier hs-var">NotInjective</span></a></span><span>
</span><span id="line-1289"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1290"></span><span>    </span><span id="local-6989586621680820988"><span class="annot"><span class="annottext">binders :: [TyConBinder]
</span><a href="#local-6989586621680820988"><span class="hs-identifier hs-var hs-var">binders</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBinders"><span class="hs-identifier hs-var">mkTemplateAnonTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#multiplicityTy"><span class="hs-identifier hs-var">multiplicityTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#multiplicityTy"><span class="hs-identifier hs-var">multiplicityTy</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1291"></span><span>
</span><span id="line-1292"></span><span class="annot"><a href="GHC.Builtin.Types.html#unrestrictedFunTy"><span class="hs-identifier hs-type">unrestrictedFunTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1293"></span><span id="unrestrictedFunTy"><span class="annot"><span class="annottext">unrestrictedFunTy :: Type
</span><a href="GHC.Builtin.Types.html#unrestrictedFunTy"><span class="hs-identifier hs-var hs-var">unrestrictedFunTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#functionWithMultiplicity"><span class="hs-identifier hs-var">functionWithMultiplicity</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#manyDataConTy"><span class="hs-identifier hs-var">manyDataConTy</span></a></span><span>
</span><span id="line-1294"></span><span>
</span><span id="line-1295"></span><span class="annot"><a href="GHC.Builtin.Types.html#unrestrictedFunTyCon"><span class="hs-identifier hs-type">unrestrictedFunTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1296"></span><span id="unrestrictedFunTyCon"><span class="annot"><span class="annottext">unrestrictedFunTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#unrestrictedFunTyCon"><span class="hs-identifier hs-var hs-var">unrestrictedFunTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyConBinder] -&gt; Type -&gt; [Role] -&gt; Type -&gt; TyCon
</span><a href="GHC.Core.Type.html#buildSynTyCon"><span class="hs-identifier hs-var">buildSynTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#unrestrictedFunTyConName"><span class="hs-identifier hs-var">unrestrictedFunTyConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820982"><span class="hs-identifier hs-var">arrowKind</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#unrestrictedFunTy"><span class="hs-identifier hs-var">unrestrictedFunTy</span></a></span><span>
</span><span id="line-1297"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621680820982"><span class="annot"><span class="annottext">arrowKind :: Type
</span><a href="#local-6989586621680820982"><span class="hs-identifier hs-var hs-var">arrowKind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[TyConBinder] -&gt; Type -&gt; Type
</span><a href="GHC.Core.TyCon.html#mkTyConKind"><span class="hs-identifier hs-var">mkTyConKind</span></a></span><span> </span><span class="annot"><span class="annottext">[TyConBinder]
</span><a href="#local-6989586621680820980"><span class="hs-identifier hs-var">binders</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span>
</span><span id="line-1298"></span><span>        </span><span class="hs-comment">-- See also funTyCon</span><span>
</span><span id="line-1299"></span><span>        </span><span id="local-6989586621680820980"><span class="annot"><span class="annottext">binders :: [TyConBinder]
</span><a href="#local-6989586621680820980"><span class="hs-identifier hs-var hs-var">binders</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">TyVar -&gt; TyConBndrVis -&gt; TyConBinder
forall var argf. var -&gt; argf -&gt; VarBndr var argf
</span><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier hs-var">Bndr</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep1TyVar"><span class="hs-identifier hs-var">runtimeRep1TyVar</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ArgFlag -&gt; TyConBndrVis
</span><a href="GHC.Core.TyCon.html#NamedTCB"><span class="hs-identifier hs-var">NamedTCB</span></a></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="GHC.Types.Var.html#Inferred"><span class="hs-identifier hs-var">Inferred</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1300"></span><span>                  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyVar -&gt; TyConBndrVis -&gt; TyConBinder
forall var argf. var -&gt; argf -&gt; VarBndr var argf
</span><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier hs-var">Bndr</span></a></span><span> </span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep2TyVar"><span class="hs-identifier hs-var">runtimeRep2TyVar</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ArgFlag -&gt; TyConBndrVis
</span><a href="GHC.Core.TyCon.html#NamedTCB"><span class="hs-identifier hs-var">NamedTCB</span></a></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="GHC.Types.Var.html#Inferred"><span class="hs-identifier hs-var">Inferred</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1301"></span><span>                  </span><span class="hs-special">]</span><span>
</span><span id="line-1302"></span><span>                  </span><span class="annot"><span class="annottext">[TyConBinder] -&gt; [TyConBinder] -&gt; [TyConBinder]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [TyConBinder]
</span><a href="GHC.Builtin.Types.Prim.html#mkTemplateAnonTyConBinders"><span class="hs-identifier hs-var">mkTemplateAnonTyConBinders</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep1Ty"><span class="hs-identifier hs-var">runtimeRep1Ty</span></a></span><span>
</span><span id="line-1303"></span><span>                                                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#runtimeRep2Ty"><span class="hs-identifier hs-var">runtimeRep2Ty</span></a></span><span>
</span><span id="line-1304"></span><span>                                                </span><span class="hs-special">]</span><span>
</span><span id="line-1305"></span><span>
</span><span id="line-1306"></span><span class="annot"><a href="GHC.Builtin.Types.html#unrestrictedFunTyConName"><span class="hs-identifier hs-type">unrestrictedFunTyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-1307"></span><span id="unrestrictedFunTyConName"><span class="annot"><span class="annottext">unrestrictedFunTyConName :: Name
</span><a href="GHC.Builtin.Types.html#unrestrictedFunTyConName"><span class="hs-identifier hs-var hs-var">unrestrictedFunTyConName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#BuiltInSyntax"><span class="hs-identifier hs-var">BuiltInSyntax</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_TYPES"><span class="hs-identifier hs-var">gHC_TYPES</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;-&gt;&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#unrestrictedFunTyConKey"><span class="hs-identifier hs-var">unrestrictedFunTyConKey</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#unrestrictedFunTyCon"><span class="hs-identifier hs-var">unrestrictedFunTyCon</span></a></span><span>
</span><span id="line-1308"></span><span>
</span><span id="line-1309"></span><span class="hs-comment">{- *********************************************************************
*                                                                      *
                Kinds and RuntimeRep
*                                                                      *
********************************************************************* -}</span><span>
</span><span id="line-1314"></span><span>
</span><span id="line-1315"></span><span class="hs-comment">-- For information about the usage of the following type,</span><span>
</span><span id="line-1316"></span><span class="hs-comment">-- see Note [TYPE and RuntimeRep] in module GHC.Builtin.Types.Prim</span><span>
</span><span id="line-1317"></span><span class="annot"><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier hs-type">runtimeRepTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1318"></span><span id="runtimeRepTy"><span class="annot"><span class="annottext">runtimeRepTy :: Type
</span><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier hs-var hs-var">runtimeRepTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#runtimeRepTyCon"><span class="hs-identifier hs-var">runtimeRepTyCon</span></a></span><span>
</span><span id="line-1319"></span><span>
</span><span id="line-1320"></span><span class="hs-comment">-- Type synonyms; see Note [TYPE and RuntimeRep] in GHC.Builtin.Types.Prim</span><span>
</span><span id="line-1321"></span><span class="hs-comment">-- type Type = tYPE 'LiftedRep</span><span>
</span><span id="line-1322"></span><span class="annot"><a href="GHC.Builtin.Types.html#liftedTypeKindTyCon"><span class="hs-identifier hs-type">liftedTypeKindTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1323"></span><span id="liftedTypeKindTyCon"><span class="annot"><span class="annottext">liftedTypeKindTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#liftedTypeKindTyCon"><span class="hs-identifier hs-var hs-var">liftedTypeKindTyCon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyConBinder] -&gt; Type -&gt; [Role] -&gt; Type -&gt; TyCon
</span><a href="GHC.Core.Type.html#buildSynTyCon"><span class="hs-identifier hs-var">buildSynTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#liftedTypeKindTyConName"><span class="hs-identifier hs-var">liftedTypeKindTyConName</span></a></span><span>
</span><span id="line-1324"></span><span>                                       </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1325"></span><span>                                       </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.Prim.html#tYPE"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedRepTy"><span class="hs-identifier hs-var">liftedRepTy</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1326"></span><span>
</span><span id="line-1327"></span><span class="annot"><a href="GHC.Builtin.Types.html#runtimeRepTyCon"><span class="hs-identifier hs-type">runtimeRepTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1328"></span><span id="runtimeRepTyCon"><span class="annot"><span class="annottext">runtimeRepTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#runtimeRepTyCon"><span class="hs-identifier hs-var hs-var">runtimeRepTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#runtimeRepTyConName"><span class="hs-identifier hs-var">runtimeRepTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1329"></span><span>                          </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#vecRepDataCon"><span class="hs-identifier hs-var">vecRepDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; [DataCon] -&gt; [DataCon]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#tupleRepDataCon"><span class="hs-identifier hs-var">tupleRepDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; [DataCon] -&gt; [DataCon]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span>
</span><span id="line-1330"></span><span>                           </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#sumRepDataCon"><span class="hs-identifier hs-var">sumRepDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; [DataCon] -&gt; [DataCon]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[DataCon]
</span><a href="GHC.Builtin.Types.html#runtimeRepSimpleDataCons"><span class="hs-identifier hs-var">runtimeRepSimpleDataCons</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1331"></span><span>
</span><span id="line-1332"></span><span class="annot"><a href="GHC.Builtin.Types.html#vecRepDataCon"><span class="hs-identifier hs-type">vecRepDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1333"></span><span id="vecRepDataCon"><span class="annot"><span class="annottext">vecRepDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#vecRepDataCon"><span class="hs-identifier hs-var hs-var">vecRepDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Type] -&gt; TyCon -&gt; RuntimeRepInfo -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcSpecialDataCon"><span class="hs-identifier hs-var">pcSpecialDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#vecRepDataConName"><span class="hs-identifier hs-var">vecRepDataConName</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#vecCountTyCon"><span class="hs-identifier hs-var">vecCountTyCon</span></a></span><span>
</span><span id="line-1334"></span><span>                                                   </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#vecElemTyCon"><span class="hs-identifier hs-var">vecElemTyCon</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-1335"></span><span>                                 </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#runtimeRepTyCon"><span class="hs-identifier hs-var">runtimeRepTyCon</span></a></span><span>
</span><span id="line-1336"></span><span>                                 </span><span class="hs-special">(</span><span class="annot"><span class="annottext">([Type] -&gt; [PrimRep]) -&gt; RuntimeRepInfo
</span><a href="GHC.Core.TyCon.html#RuntimeRep"><span class="hs-identifier hs-var">RuntimeRep</span></a></span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [PrimRep]
</span><a href="#local-6989586621680820972"><span class="hs-identifier hs-var">prim_rep_fun</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1337"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1338"></span><span>    </span><span class="hs-comment">-- See Note [Getting from RuntimeRep to PrimRep] in GHC.Types.RepType</span><span>
</span><span id="line-1339"></span><span>    </span><span id="local-6989586621680820972"><span class="annot"><span class="annottext">prim_rep_fun :: [Type] -&gt; [PrimRep]
</span><a href="#local-6989586621680820972"><span class="hs-identifier hs-var hs-var">prim_rep_fun</span></a></span></span><span> </span><span class="hs-special">[</span><span id="local-6989586621680820965"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820965"><span class="hs-identifier hs-var">count</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680820964"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820964"><span class="hs-identifier hs-var">elem</span></a></span></span><span class="hs-special">]</span><span>
</span><span id="line-1340"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#VecCount"><span class="hs-identifier hs-type">VecCount</span></a></span><span> </span><span id="local-6989586621680820962"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680820962"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; RuntimeRepInfo
</span><a href="GHC.Core.TyCon.html#tyConRuntimeRepInfo"><span class="hs-identifier hs-var">tyConRuntimeRepInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; TyCon
</span><a href="GHC.Core.Type.html#tyConAppTyCon"><span class="hs-identifier hs-var">tyConAppTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820965"><span class="hs-identifier hs-var">count</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1341"></span><span>      </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#VecElem"><span class="hs-identifier hs-type">VecElem</span></a></span><span>  </span><span id="local-6989586621680820958"><span class="annot"><span class="annottext">PrimElemRep
</span><a href="#local-6989586621680820958"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; RuntimeRepInfo
</span><a href="GHC.Core.TyCon.html#tyConRuntimeRepInfo"><span class="hs-identifier hs-var">tyConRuntimeRepInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; TyCon
</span><a href="GHC.Core.Type.html#tyConAppTyCon"><span class="hs-identifier hs-var">tyConAppTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820964"><span class="hs-identifier hs-var">elem</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1342"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Arity -&gt; PrimElemRep -&gt; PrimRep
</span><a href="GHC.Core.TyCon.html#VecRep"><span class="hs-identifier hs-var">VecRep</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680820962"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="#local-6989586621680820958"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1343"></span><span>    </span><span class="annot"><a href="#local-6989586621680820972"><span class="hs-identifier hs-var">prim_rep_fun</span></a></span><span> </span><span id="local-6989586621680820956"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820956"><span class="hs-identifier hs-var">args</span></a></span></span><span>
</span><span id="line-1344"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; SDoc -&gt; [PrimRep]
forall a. HasCallStack =&gt; [Char] -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;vecRepDataCon&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Type] -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820956"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1345"></span><span>
</span><span id="line-1346"></span><span class="annot"><a href="GHC.Builtin.Types.html#vecRepDataConTyCon"><span class="hs-identifier hs-type">vecRepDataConTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1347"></span><span id="vecRepDataConTyCon"><span class="annot"><span class="annottext">vecRepDataConTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#vecRepDataConTyCon"><span class="hs-identifier hs-var hs-var">vecRepDataConTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#vecRepDataCon"><span class="hs-identifier hs-var">vecRepDataCon</span></a></span><span>
</span><span id="line-1348"></span><span>
</span><span id="line-1349"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleRepDataCon"><span class="hs-identifier hs-type">tupleRepDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1350"></span><span id="tupleRepDataCon"><span class="annot"><span class="annottext">tupleRepDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#tupleRepDataCon"><span class="hs-identifier hs-var hs-var">tupleRepDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Type] -&gt; TyCon -&gt; RuntimeRepInfo -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcSpecialDataCon"><span class="hs-identifier hs-var">pcSpecialDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#tupleRepDataConName"><span class="hs-identifier hs-var">tupleRepDataConName</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkListTy"><span class="hs-identifier hs-var">mkListTy</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier hs-var">runtimeRepTy</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-1351"></span><span>                                   </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#runtimeRepTyCon"><span class="hs-identifier hs-var">runtimeRepTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">([Type] -&gt; [PrimRep]) -&gt; RuntimeRepInfo
</span><a href="GHC.Core.TyCon.html#RuntimeRep"><span class="hs-identifier hs-var">RuntimeRep</span></a></span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [PrimRep]
</span><a href="#local-6989586621680820955"><span class="hs-identifier hs-var">prim_rep_fun</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1352"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1353"></span><span>    </span><span class="hs-comment">-- See Note [Getting from RuntimeRep to PrimRep] in GHC.Types.RepType</span><span>
</span><span id="line-1354"></span><span>    </span><span id="local-6989586621680820955"><span class="annot"><span class="annottext">prim_rep_fun :: [Type] -&gt; [PrimRep]
</span><a href="#local-6989586621680820955"><span class="hs-identifier hs-var hs-var">prim_rep_fun</span></a></span></span><span> </span><span class="hs-special">[</span><span id="local-6989586621680820948"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820948"><span class="hs-identifier hs-var">rr_ty_list</span></a></span></span><span class="hs-special">]</span><span>
</span><span id="line-1355"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Type -&gt; [PrimRep]) -&gt; [Type] -&gt; [PrimRep]
forall (t :: * -&gt; *) a b. Foldable t =&gt; (a -&gt; [b]) -&gt; t a -&gt; [b]
</span><a href="../../base/src/Data.Foldable.html#concatMap"><span class="hs-identifier hs-var">concatMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; SDoc -&gt; Type -&gt; [PrimRep]
SDoc -&gt; Type -&gt; [PrimRep]
</span><a href="GHC.Types.RepType.html#runtimeRepPrimRep"><span class="hs-identifier hs-var">runtimeRepPrimRep</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680820945"><span class="hs-identifier hs-var">doc</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820944"><span class="hs-identifier hs-var">rr_tys</span></a></span><span>
</span><span id="line-1356"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-1357"></span><span>        </span><span id="local-6989586621680820944"><span class="annot"><span class="annottext">rr_tys :: [Type]
</span><a href="#local-6989586621680820944"><span class="hs-identifier hs-var hs-var">rr_tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; [Type]
</span><a href="GHC.Builtin.Types.html#extractPromotedList"><span class="hs-identifier hs-var">extractPromotedList</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820948"><span class="hs-identifier hs-var">rr_ty_list</span></a></span><span>
</span><span id="line-1358"></span><span>        </span><span id="local-6989586621680820945"><span class="annot"><span class="annottext">doc :: SDoc
</span><a href="#local-6989586621680820945"><span class="hs-identifier hs-var hs-var">doc</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;tupleRepDataCon&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820944"><span class="hs-identifier hs-var">rr_tys</span></a></span><span>
</span><span id="line-1359"></span><span>    </span><span class="annot"><a href="#local-6989586621680820955"><span class="hs-identifier hs-var">prim_rep_fun</span></a></span><span> </span><span id="local-6989586621680820938"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820938"><span class="hs-identifier hs-var">args</span></a></span></span><span>
</span><span id="line-1360"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; SDoc -&gt; [PrimRep]
forall a. HasCallStack =&gt; [Char] -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;tupleRepDataCon&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Type] -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820938"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1361"></span><span>
</span><span id="line-1362"></span><span class="annot"><a href="GHC.Builtin.Types.html#tupleRepDataConTyCon"><span class="hs-identifier hs-type">tupleRepDataConTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1363"></span><span id="tupleRepDataConTyCon"><span class="annot"><span class="annottext">tupleRepDataConTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#tupleRepDataConTyCon"><span class="hs-identifier hs-var hs-var">tupleRepDataConTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#tupleRepDataCon"><span class="hs-identifier hs-var">tupleRepDataCon</span></a></span><span>
</span><span id="line-1364"></span><span>
</span><span id="line-1365"></span><span class="annot"><a href="GHC.Builtin.Types.html#sumRepDataCon"><span class="hs-identifier hs-type">sumRepDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1366"></span><span id="sumRepDataCon"><span class="annot"><span class="annottext">sumRepDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#sumRepDataCon"><span class="hs-identifier hs-var hs-var">sumRepDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Type] -&gt; TyCon -&gt; RuntimeRepInfo -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcSpecialDataCon"><span class="hs-identifier hs-var">pcSpecialDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#sumRepDataConName"><span class="hs-identifier hs-var">sumRepDataConName</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkListTy"><span class="hs-identifier hs-var">mkListTy</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#runtimeRepTy"><span class="hs-identifier hs-var">runtimeRepTy</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-1367"></span><span>                                 </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#runtimeRepTyCon"><span class="hs-identifier hs-var">runtimeRepTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">([Type] -&gt; [PrimRep]) -&gt; RuntimeRepInfo
</span><a href="GHC.Core.TyCon.html#RuntimeRep"><span class="hs-identifier hs-var">RuntimeRep</span></a></span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [PrimRep]
</span><a href="#local-6989586621680820937"><span class="hs-identifier hs-var">prim_rep_fun</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1368"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1369"></span><span>    </span><span class="hs-comment">-- See Note [Getting from RuntimeRep to PrimRep] in GHC.Types.RepType</span><span>
</span><span id="line-1370"></span><span>    </span><span id="local-6989586621680820937"><span class="annot"><span class="annottext">prim_rep_fun :: [Type] -&gt; [PrimRep]
</span><a href="#local-6989586621680820937"><span class="hs-identifier hs-var hs-var">prim_rep_fun</span></a></span></span><span> </span><span class="hs-special">[</span><span id="local-6989586621680820932"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820932"><span class="hs-identifier hs-var">rr_ty_list</span></a></span></span><span class="hs-special">]</span><span>
</span><span id="line-1371"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(SlotTy -&gt; PrimRep) -&gt; [SlotTy] -&gt; [PrimRep]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">SlotTy -&gt; PrimRep
</span><a href="GHC.Types.RepType.html#slotPrimRep"><span class="hs-identifier hs-var">slotPrimRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[[PrimRep]] -&gt; [SlotTy]
</span><a href="GHC.Types.RepType.html#ubxSumRepType"><span class="hs-identifier hs-var">ubxSumRepType</span></a></span><span> </span><span class="annot"><span class="annottext">[[PrimRep]]
</span><a href="#local-6989586621680820929"><span class="hs-identifier hs-var">prim_repss</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1372"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-1373"></span><span>        </span><span id="local-6989586621680820928"><span class="annot"><span class="annottext">rr_tys :: [Type]
</span><a href="#local-6989586621680820928"><span class="hs-identifier hs-var hs-var">rr_tys</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; [Type]
</span><a href="GHC.Builtin.Types.html#extractPromotedList"><span class="hs-identifier hs-var">extractPromotedList</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820932"><span class="hs-identifier hs-var">rr_ty_list</span></a></span><span>
</span><span id="line-1374"></span><span>        </span><span id="local-6989586621680820925"><span class="annot"><span class="annottext">doc :: SDoc
</span><a href="#local-6989586621680820925"><span class="hs-identifier hs-var hs-var">doc</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;sumRepDataCon&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820928"><span class="hs-identifier hs-var">rr_tys</span></a></span><span>
</span><span id="line-1375"></span><span>        </span><span id="local-6989586621680820929"><span class="annot"><span class="annottext">prim_repss :: [[PrimRep]]
</span><a href="#local-6989586621680820929"><span class="hs-identifier hs-var hs-var">prim_repss</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Type -&gt; [PrimRep]) -&gt; [Type] -&gt; [[PrimRep]]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; SDoc -&gt; Type -&gt; [PrimRep]
SDoc -&gt; Type -&gt; [PrimRep]
</span><a href="GHC.Types.RepType.html#runtimeRepPrimRep"><span class="hs-identifier hs-var">runtimeRepPrimRep</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680820925"><span class="hs-identifier hs-var">doc</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820928"><span class="hs-identifier hs-var">rr_tys</span></a></span><span>
</span><span id="line-1376"></span><span>    </span><span class="annot"><a href="#local-6989586621680820937"><span class="hs-identifier hs-var">prim_rep_fun</span></a></span><span> </span><span id="local-6989586621680820923"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820923"><span class="hs-identifier hs-var">args</span></a></span></span><span>
</span><span id="line-1377"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; SDoc -&gt; [PrimRep]
forall a. HasCallStack =&gt; [Char] -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;sumRepDataCon&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Type] -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820923"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1378"></span><span>
</span><span id="line-1379"></span><span class="annot"><a href="GHC.Builtin.Types.html#sumRepDataConTyCon"><span class="hs-identifier hs-type">sumRepDataConTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1380"></span><span id="sumRepDataConTyCon"><span class="annot"><span class="annottext">sumRepDataConTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#sumRepDataConTyCon"><span class="hs-identifier hs-var hs-var">sumRepDataConTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#sumRepDataCon"><span class="hs-identifier hs-var">sumRepDataCon</span></a></span><span>
</span><span id="line-1381"></span><span>
</span><span id="line-1382"></span><span class="hs-comment">-- See Note [Wiring in RuntimeRep]</span><span>
</span><span id="line-1383"></span><span class="hs-comment">-- See Note [Getting from RuntimeRep to PrimRep] in GHC.Types.RepType</span><span>
</span><span id="line-1384"></span><span class="annot"><a href="GHC.Builtin.Types.html#runtimeRepSimpleDataCons"><span class="hs-identifier hs-type">runtimeRepSimpleDataCons</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1385"></span><span class="annot"><a href="GHC.Builtin.Types.html#liftedRepDataCon"><span class="hs-identifier hs-type">liftedRepDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1386"></span><span id="runtimeRepSimpleDataCons"><span class="annot"><span class="annottext">runtimeRepSimpleDataCons :: [DataCon]
</span><a href="GHC.Builtin.Types.html#runtimeRepSimpleDataCons"><span class="hs-identifier hs-var">runtimeRepSimpleDataCons</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span id="liftedRepDataCon"><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#liftedRepDataCon"><span class="hs-identifier hs-var">liftedRepDataCon</span></a></span></span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span class="annot"><span class="annottext">[DataCon]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-1387"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(PrimRep -&gt; Name -&gt; DataCon) -&gt; [PrimRep] -&gt; [Name] -&gt; [DataCon]
forall a b c. (a -&gt; b -&gt; c) -&gt; [a] -&gt; [b] -&gt; [c]
</span><a href="GHC.Utils.Misc.html#zipWithLazy"><span class="hs-identifier hs-var">zipWithLazy</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep -&gt; Name -&gt; DataCon
</span><a href="#local-6989586621680820921"><span class="hs-identifier hs-var">mk_runtime_rep_dc</span></a></span><span>
</span><span id="line-1388"></span><span>    </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#LiftedRep"><span class="hs-identifier hs-var">LiftedRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span>
</span><span id="line-1389"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#IntRep"><span class="hs-identifier hs-var">IntRep</span></a></span><span>
</span><span id="line-1390"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int8Rep"><span class="hs-identifier hs-var">Int8Rep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int16Rep"><span class="hs-identifier hs-var">Int16Rep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int32Rep"><span class="hs-identifier hs-var">Int32Rep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Int64Rep"><span class="hs-identifier hs-var">Int64Rep</span></a></span><span>
</span><span id="line-1391"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#WordRep"><span class="hs-identifier hs-var">WordRep</span></a></span><span>
</span><span id="line-1392"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word8Rep"><span class="hs-identifier hs-var">Word8Rep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word16Rep"><span class="hs-identifier hs-var">Word16Rep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word32Rep"><span class="hs-identifier hs-var">Word32Rep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#Word64Rep"><span class="hs-identifier hs-var">Word64Rep</span></a></span><span>
</span><span id="line-1393"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#AddrRep"><span class="hs-identifier hs-var">AddrRep</span></a></span><span>
</span><span id="line-1394"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#FloatRep"><span class="hs-identifier hs-var">FloatRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#DoubleRep"><span class="hs-identifier hs-var">DoubleRep</span></a></span><span>
</span><span id="line-1395"></span><span>    </span><span class="hs-special">]</span><span>
</span><span id="line-1396"></span><span>    </span><span class="annot"><span class="annottext">[Name]
</span><a href="GHC.Builtin.Types.html#runtimeRepSimpleDataConNames"><span class="hs-identifier hs-var">runtimeRepSimpleDataConNames</span></a></span><span>
</span><span id="line-1397"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1398"></span><span>    </span><span id="local-6989586621680820921"><span class="annot"><span class="annottext">mk_runtime_rep_dc :: PrimRep -&gt; Name -&gt; DataCon
</span><a href="#local-6989586621680820921"><span class="hs-identifier hs-var hs-var">mk_runtime_rep_dc</span></a></span></span><span> </span><span id="local-6989586621680820905"><span class="annot"><span class="annottext">PrimRep
</span><a href="#local-6989586621680820905"><span class="hs-identifier hs-var">primrep</span></a></span></span><span> </span><span id="local-6989586621680820904"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680820904"><span class="hs-identifier hs-var">name</span></a></span></span><span>
</span><span id="line-1399"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Type] -&gt; TyCon -&gt; RuntimeRepInfo -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcSpecialDataCon"><span class="hs-identifier hs-var">pcSpecialDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680820904"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#runtimeRepTyCon"><span class="hs-identifier hs-var">runtimeRepTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">([Type] -&gt; [PrimRep]) -&gt; RuntimeRepInfo
</span><a href="GHC.Core.TyCon.html#RuntimeRep"><span class="hs-identifier hs-var">RuntimeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="annot"><span class="annottext">[Type]
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">PrimRep
</span><a href="#local-6989586621680820905"><span class="hs-identifier hs-var">primrep</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1400"></span><span>
</span><span id="line-1401"></span><span class="hs-comment">-- See Note [Wiring in RuntimeRep]</span><span>
</span><span id="line-1402"></span><span class="annot"><a href="GHC.Builtin.Types.html#liftedRepDataConTy"><span class="hs-identifier hs-type">liftedRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#unliftedRepDataConTy"><span class="hs-identifier hs-type">unliftedRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-1403"></span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#intRepDataConTy"><span class="hs-identifier hs-type">intRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-1404"></span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#int8RepDataConTy"><span class="hs-identifier hs-type">int8RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int16RepDataConTy"><span class="hs-identifier hs-type">int16RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int32RepDataConTy"><span class="hs-identifier hs-type">int32RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int64RepDataConTy"><span class="hs-identifier hs-type">int64RepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-1405"></span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#wordRepDataConTy"><span class="hs-identifier hs-type">wordRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-1406"></span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#word8RepDataConTy"><span class="hs-identifier hs-type">word8RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word16RepDataConTy"><span class="hs-identifier hs-type">word16RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word32RepDataConTy"><span class="hs-identifier hs-type">word32RepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word64RepDataConTy"><span class="hs-identifier hs-type">word64RepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-1407"></span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#addrRepDataConTy"><span class="hs-identifier hs-type">addrRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-1408"></span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#floatRepDataConTy"><span class="hs-identifier hs-type">floatRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleRepDataConTy"><span class="hs-identifier hs-type">doubleRepDataConTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1409"></span><span class="hs-special">[</span><span id="liftedRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedRepDataConTy"><span class="hs-identifier hs-var">liftedRepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="unliftedRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#unliftedRepDataConTy"><span class="hs-identifier hs-var">unliftedRepDataConTy</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-1410"></span><span>   </span><span id="intRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#intRepDataConTy"><span class="hs-identifier hs-var">intRepDataConTy</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-1411"></span><span>   </span><span id="int8RepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int8RepDataConTy"><span class="hs-identifier hs-var">int8RepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="int16RepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int16RepDataConTy"><span class="hs-identifier hs-var">int16RepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="int32RepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int32RepDataConTy"><span class="hs-identifier hs-var">int32RepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="int64RepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int64RepDataConTy"><span class="hs-identifier hs-var">int64RepDataConTy</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-1412"></span><span>   </span><span id="wordRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#wordRepDataConTy"><span class="hs-identifier hs-var">wordRepDataConTy</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-1413"></span><span>   </span><span id="word8RepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word8RepDataConTy"><span class="hs-identifier hs-var">word8RepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="word16RepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word16RepDataConTy"><span class="hs-identifier hs-var">word16RepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="word32RepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word32RepDataConTy"><span class="hs-identifier hs-var">word32RepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="word64RepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word64RepDataConTy"><span class="hs-identifier hs-var">word64RepDataConTy</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-1414"></span><span>   </span><span id="addrRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#addrRepDataConTy"><span class="hs-identifier hs-var">addrRepDataConTy</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-1415"></span><span>   </span><span id="floatRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#floatRepDataConTy"><span class="hs-identifier hs-var">floatRepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="doubleRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#doubleRepDataConTy"><span class="hs-identifier hs-var">doubleRepDataConTy</span></a></span></span><span>
</span><span id="line-1416"></span><span>   </span><span class="hs-special">]</span><span>
</span><span id="line-1417"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(DataCon -&gt; Type) -&gt; [DataCon] -&gt; [Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">(TyCon -&gt; Type) -&gt; (DataCon -&gt; TyCon) -&gt; DataCon -&gt; Type
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[DataCon]
</span><a href="GHC.Builtin.Types.html#runtimeRepSimpleDataCons"><span class="hs-identifier hs-var">runtimeRepSimpleDataCons</span></a></span><span>
</span><span id="line-1418"></span><span>
</span><span id="line-1419"></span><span class="annot"><a href="GHC.Builtin.Types.html#vecCountTyCon"><span class="hs-identifier hs-type">vecCountTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1420"></span><span id="vecCountTyCon"><span class="annot"><span class="annottext">vecCountTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#vecCountTyCon"><span class="hs-identifier hs-var hs-var">vecCountTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#vecCountTyConName"><span class="hs-identifier hs-var">vecCountTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[DataCon]
</span><a href="GHC.Builtin.Types.html#vecCountDataCons"><span class="hs-identifier hs-var">vecCountDataCons</span></a></span><span>
</span><span id="line-1421"></span><span>
</span><span id="line-1422"></span><span class="hs-comment">-- See Note [Wiring in RuntimeRep]</span><span>
</span><span id="line-1423"></span><span class="annot"><a href="GHC.Builtin.Types.html#vecCountDataCons"><span class="hs-identifier hs-type">vecCountDataCons</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1424"></span><span id="vecCountDataCons"><span class="annot"><span class="annottext">vecCountDataCons :: [DataCon]
</span><a href="GHC.Builtin.Types.html#vecCountDataCons"><span class="hs-identifier hs-var hs-var">vecCountDataCons</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Arity -&gt; Name -&gt; DataCon) -&gt; [Arity] -&gt; [Name] -&gt; [DataCon]
forall a b c. (a -&gt; b -&gt; c) -&gt; [a] -&gt; [b] -&gt; [c]
</span><a href="GHC.Utils.Misc.html#zipWithLazy"><span class="hs-identifier hs-var">zipWithLazy</span></a></span><span> </span><span class="annot"><span class="annottext">Arity -&gt; Name -&gt; DataCon
</span><a href="#local-6989586621680820902"><span class="hs-identifier hs-var">mk_vec_count_dc</span></a></span><span>
</span><span id="line-1425"></span><span>                     </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">2</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">4</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">8</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">16</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">32</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Arity
</span><span class="hs-number">64</span></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-1426"></span><span>                     </span><span class="annot"><span class="annottext">[Name]
</span><a href="GHC.Builtin.Types.html#vecCountDataConNames"><span class="hs-identifier hs-var">vecCountDataConNames</span></a></span><span>
</span><span id="line-1427"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1428"></span><span>    </span><span id="local-6989586621680820902"><span class="annot"><span class="annottext">mk_vec_count_dc :: Arity -&gt; Name -&gt; DataCon
</span><a href="#local-6989586621680820902"><span class="hs-identifier hs-var hs-var">mk_vec_count_dc</span></a></span></span><span> </span><span id="local-6989586621680820901"><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680820901"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621680820900"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680820900"><span class="hs-identifier hs-var">name</span></a></span></span><span>
</span><span id="line-1429"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Type] -&gt; TyCon -&gt; RuntimeRepInfo -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcSpecialDataCon"><span class="hs-identifier hs-var">pcSpecialDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680820900"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#vecCountTyCon"><span class="hs-identifier hs-var">vecCountTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; RuntimeRepInfo
</span><a href="GHC.Core.TyCon.html#VecCount"><span class="hs-identifier hs-var">VecCount</span></a></span><span> </span><span class="annot"><span class="annottext">Arity
</span><a href="#local-6989586621680820901"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1430"></span><span>
</span><span id="line-1431"></span><span class="hs-comment">-- See Note [Wiring in RuntimeRep]</span><span>
</span><span id="line-1432"></span><span class="annot"><a href="GHC.Builtin.Types.html#vec2DataConTy"><span class="hs-identifier hs-type">vec2DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec4DataConTy"><span class="hs-identifier hs-type">vec4DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec8DataConTy"><span class="hs-identifier hs-type">vec8DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec16DataConTy"><span class="hs-identifier hs-type">vec16DataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#vec32DataConTy"><span class="hs-identifier hs-type">vec32DataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-1433"></span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#vec64DataConTy"><span class="hs-identifier hs-type">vec64DataConTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1434"></span><span class="hs-special">[</span><span id="vec2DataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec2DataConTy"><span class="hs-identifier hs-var">vec2DataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="vec4DataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec4DataConTy"><span class="hs-identifier hs-var">vec4DataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="vec8DataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec8DataConTy"><span class="hs-identifier hs-var">vec8DataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="vec16DataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec16DataConTy"><span class="hs-identifier hs-var">vec16DataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="vec32DataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec32DataConTy"><span class="hs-identifier hs-var">vec32DataConTy</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-1435"></span><span>  </span><span id="vec64DataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#vec64DataConTy"><span class="hs-identifier hs-var">vec64DataConTy</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(DataCon -&gt; Type) -&gt; [DataCon] -&gt; [Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">(TyCon -&gt; Type) -&gt; (DataCon -&gt; TyCon) -&gt; DataCon -&gt; Type
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[DataCon]
</span><a href="GHC.Builtin.Types.html#vecCountDataCons"><span class="hs-identifier hs-var">vecCountDataCons</span></a></span><span>
</span><span id="line-1436"></span><span>
</span><span id="line-1437"></span><span class="annot"><a href="GHC.Builtin.Types.html#vecElemTyCon"><span class="hs-identifier hs-type">vecElemTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1438"></span><span id="vecElemTyCon"><span class="annot"><span class="annottext">vecElemTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#vecElemTyCon"><span class="hs-identifier hs-var hs-var">vecElemTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#vecElemTyConName"><span class="hs-identifier hs-var">vecElemTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[DataCon]
</span><a href="GHC.Builtin.Types.html#vecElemDataCons"><span class="hs-identifier hs-var">vecElemDataCons</span></a></span><span>
</span><span id="line-1439"></span><span>
</span><span id="line-1440"></span><span class="hs-comment">-- See Note [Wiring in RuntimeRep]</span><span>
</span><span id="line-1441"></span><span class="annot"><a href="GHC.Builtin.Types.html#vecElemDataCons"><span class="hs-identifier hs-type">vecElemDataCons</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1442"></span><span id="vecElemDataCons"><span class="annot"><span class="annottext">vecElemDataCons :: [DataCon]
</span><a href="GHC.Builtin.Types.html#vecElemDataCons"><span class="hs-identifier hs-var hs-var">vecElemDataCons</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(PrimElemRep -&gt; Name -&gt; DataCon)
-&gt; [PrimElemRep] -&gt; [Name] -&gt; [DataCon]
forall a b c. (a -&gt; b -&gt; c) -&gt; [a] -&gt; [b] -&gt; [c]
</span><a href="GHC.Utils.Misc.html#zipWithLazy"><span class="hs-identifier hs-var">zipWithLazy</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep -&gt; Name -&gt; DataCon
</span><a href="#local-6989586621680820899"><span class="hs-identifier hs-var">mk_vec_elem_dc</span></a></span><span>
</span><span id="line-1443"></span><span>                    </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int8ElemRep"><span class="hs-identifier hs-var">Int8ElemRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int16ElemRep"><span class="hs-identifier hs-var">Int16ElemRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int32ElemRep"><span class="hs-identifier hs-var">Int32ElemRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Int64ElemRep"><span class="hs-identifier hs-var">Int64ElemRep</span></a></span><span>
</span><span id="line-1444"></span><span>                    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word8ElemRep"><span class="hs-identifier hs-var">Word8ElemRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word16ElemRep"><span class="hs-identifier hs-var">Word16ElemRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word32ElemRep"><span class="hs-identifier hs-var">Word32ElemRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#Word64ElemRep"><span class="hs-identifier hs-var">Word64ElemRep</span></a></span><span>
</span><span id="line-1445"></span><span>                    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#FloatElemRep"><span class="hs-identifier hs-var">FloatElemRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="GHC.Core.TyCon.html#DoubleElemRep"><span class="hs-identifier hs-var">DoubleElemRep</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-1446"></span><span>                    </span><span class="annot"><span class="annottext">[Name]
</span><a href="GHC.Builtin.Types.html#vecElemDataConNames"><span class="hs-identifier hs-var">vecElemDataConNames</span></a></span><span>
</span><span id="line-1447"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1448"></span><span>    </span><span id="local-6989586621680820899"><span class="annot"><span class="annottext">mk_vec_elem_dc :: PrimElemRep -&gt; Name -&gt; DataCon
</span><a href="#local-6989586621680820899"><span class="hs-identifier hs-var hs-var">mk_vec_elem_dc</span></a></span></span><span> </span><span id="local-6989586621680820888"><span class="annot"><span class="annottext">PrimElemRep
</span><a href="#local-6989586621680820888"><span class="hs-identifier hs-var">elem</span></a></span></span><span> </span><span id="local-6989586621680820887"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680820887"><span class="hs-identifier hs-var">name</span></a></span></span><span>
</span><span id="line-1449"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [Type] -&gt; TyCon -&gt; RuntimeRepInfo -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcSpecialDataCon"><span class="hs-identifier hs-var">pcSpecialDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680820887"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#vecElemTyCon"><span class="hs-identifier hs-var">vecElemTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">PrimElemRep -&gt; RuntimeRepInfo
</span><a href="GHC.Core.TyCon.html#VecElem"><span class="hs-identifier hs-var">VecElem</span></a></span><span> </span><span class="annot"><span class="annottext">PrimElemRep
</span><a href="#local-6989586621680820888"><span class="hs-identifier hs-var">elem</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1450"></span><span>
</span><span id="line-1451"></span><span class="hs-comment">-- See Note [Wiring in RuntimeRep]</span><span>
</span><span id="line-1452"></span><span class="annot"><a href="GHC.Builtin.Types.html#int8ElemRepDataConTy"><span class="hs-identifier hs-type">int8ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int16ElemRepDataConTy"><span class="hs-identifier hs-type">int16ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#int32ElemRepDataConTy"><span class="hs-identifier hs-type">int32ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-1453"></span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#int64ElemRepDataConTy"><span class="hs-identifier hs-type">int64ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word8ElemRepDataConTy"><span class="hs-identifier hs-type">word8ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word16ElemRepDataConTy"><span class="hs-identifier hs-type">word16ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-1454"></span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#word32ElemRepDataConTy"><span class="hs-identifier hs-type">word32ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#word64ElemRepDataConTy"><span class="hs-identifier hs-type">word64ElemRepDataConTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#floatElemRepDataConTy"><span class="hs-identifier hs-type">floatElemRepDataConTy</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-1455"></span><span>  </span><span class="annot"><a href="GHC.Builtin.Types.html#doubleElemRepDataConTy"><span class="hs-identifier hs-type">doubleElemRepDataConTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1456"></span><span class="hs-special">[</span><span id="int8ElemRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int8ElemRepDataConTy"><span class="hs-identifier hs-var">int8ElemRepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="int16ElemRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int16ElemRepDataConTy"><span class="hs-identifier hs-var">int16ElemRepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="int32ElemRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int32ElemRepDataConTy"><span class="hs-identifier hs-var">int32ElemRepDataConTy</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-1457"></span><span>  </span><span id="int64ElemRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#int64ElemRepDataConTy"><span class="hs-identifier hs-var">int64ElemRepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="word8ElemRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word8ElemRepDataConTy"><span class="hs-identifier hs-var">word8ElemRepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="word16ElemRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word16ElemRepDataConTy"><span class="hs-identifier hs-var">word16ElemRepDataConTy</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-1458"></span><span>  </span><span id="word32ElemRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word32ElemRepDataConTy"><span class="hs-identifier hs-var">word32ElemRepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="word64ElemRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#word64ElemRepDataConTy"><span class="hs-identifier hs-var">word64ElemRepDataConTy</span></a></span></span><span class="hs-special">,</span><span> </span><span id="floatElemRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#floatElemRepDataConTy"><span class="hs-identifier hs-var">floatElemRepDataConTy</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-1459"></span><span>  </span><span id="doubleElemRepDataConTy"><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#doubleElemRepDataConTy"><span class="hs-identifier hs-var">doubleElemRepDataConTy</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(DataCon -&gt; Type) -&gt; [DataCon] -&gt; [Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">(TyCon -&gt; Type) -&gt; (DataCon -&gt; TyCon) -&gt; DataCon -&gt; Type
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1460"></span><span>                                </span><span class="annot"><span class="annottext">[DataCon]
</span><a href="GHC.Builtin.Types.html#vecElemDataCons"><span class="hs-identifier hs-var">vecElemDataCons</span></a></span><span>
</span><span id="line-1461"></span><span>
</span><span id="line-1462"></span><span class="annot"><a href="GHC.Builtin.Types.html#liftedRepDataConTyCon"><span class="hs-identifier hs-type">liftedRepDataConTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1463"></span><span id="liftedRepDataConTyCon"><span class="annot"><span class="annottext">liftedRepDataConTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#liftedRepDataConTyCon"><span class="hs-identifier hs-var hs-var">liftedRepDataConTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#liftedRepDataCon"><span class="hs-identifier hs-var">liftedRepDataCon</span></a></span><span>
</span><span id="line-1464"></span><span>
</span><span id="line-1465"></span><span class="hs-comment">-- The type ('LiftedRep)</span><span>
</span><span id="line-1466"></span><span class="annot"><a href="GHC.Builtin.Types.html#liftedRepTy"><span class="hs-identifier hs-type">liftedRepTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1467"></span><span id="liftedRepTy"><span class="annot"><span class="annottext">liftedRepTy :: Type
</span><a href="GHC.Builtin.Types.html#liftedRepTy"><span class="hs-identifier hs-var hs-var">liftedRepTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedRepDataConTy"><span class="hs-identifier hs-var">liftedRepDataConTy</span></a></span><span>
</span><span id="line-1468"></span><span>
</span><span id="line-1469"></span><span class="hs-comment">{- *********************************************************************
*                                                                      *
     The boxed primitive types: Char, Int, etc
*                                                                      *
********************************************************************* -}</span><span>
</span><span id="line-1474"></span><span>
</span><span id="line-1475"></span><span class="annot"><a href="GHC.Builtin.Types.html#boxingDataCon_maybe"><span class="hs-identifier hs-type">boxingDataCon_maybe</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1476"></span><span class="hs-comment">--    boxingDataCon_maybe Char# = C#</span><span>
</span><span id="line-1477"></span><span class="hs-comment">--    boxingDataCon_maybe Int#  = I#</span><span>
</span><span id="line-1478"></span><span class="hs-comment">--    ... etc ...</span><span>
</span><span id="line-1479"></span><span class="hs-comment">-- See Note [Boxing primitive types]</span><span>
</span><span id="line-1480"></span><span id="boxingDataCon_maybe"><span class="annot"><span class="annottext">boxingDataCon_maybe :: TyCon -&gt; Maybe DataCon
</span><a href="GHC.Builtin.Types.html#boxingDataCon_maybe"><span class="hs-identifier hs-var hs-var">boxingDataCon_maybe</span></a></span></span><span> </span><span id="local-6989586621680820886"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680820886"><span class="hs-identifier hs-var">tc</span></a></span></span><span>
</span><span id="line-1481"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NameEnv DataCon -&gt; Name -&gt; Maybe DataCon
forall a. NameEnv a -&gt; Name -&gt; Maybe a
</span><a href="GHC.Types.Name.Env.html#lookupNameEnv"><span class="hs-identifier hs-var">lookupNameEnv</span></a></span><span> </span><span class="annot"><span class="annottext">NameEnv DataCon
</span><a href="GHC.Builtin.Types.html#boxing_constr_env"><span class="hs-identifier hs-var">boxing_constr_env</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; Name
</span><a href="GHC.Core.TyCon.html#tyConName"><span class="hs-identifier hs-var hs-var">tyConName</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680820886"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1482"></span><span>
</span><span id="line-1483"></span><span class="annot"><a href="GHC.Builtin.Types.html#boxing_constr_env"><span class="hs-identifier hs-type">boxing_constr_env</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html#NameEnv"><span class="hs-identifier hs-type">NameEnv</span></a></span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1484"></span><span id="boxing_constr_env"><span class="annot"><span class="annottext">boxing_constr_env :: NameEnv DataCon
</span><a href="GHC.Builtin.Types.html#boxing_constr_env"><span class="hs-identifier hs-var hs-var">boxing_constr_env</span></a></span></span><span>
</span><span id="line-1485"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[(Name, DataCon)] -&gt; NameEnv DataCon
forall a. [(Name, a)] -&gt; NameEnv a
</span><a href="GHC.Types.Name.Env.html#mkNameEnv"><span class="hs-identifier hs-var">mkNameEnv</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#charPrimTyConName"><span class="hs-identifier hs-var">charPrimTyConName</span></a></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#charDataCon"><span class="hs-identifier hs-var">charDataCon</span></a></span><span>  </span><span class="hs-special">)</span><span>
</span><span id="line-1486"></span><span>              </span><span class="hs-special">,</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#intPrimTyConName"><span class="hs-identifier hs-var">intPrimTyConName</span></a></span><span>   </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#intDataCon"><span class="hs-identifier hs-var">intDataCon</span></a></span><span>   </span><span class="hs-special">)</span><span>
</span><span id="line-1487"></span><span>              </span><span class="hs-special">,</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#wordPrimTyConName"><span class="hs-identifier hs-var">wordPrimTyConName</span></a></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#wordDataCon"><span class="hs-identifier hs-var">wordDataCon</span></a></span><span>  </span><span class="hs-special">)</span><span>
</span><span id="line-1488"></span><span>              </span><span class="hs-special">,</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#floatPrimTyConName"><span class="hs-identifier hs-var">floatPrimTyConName</span></a></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#floatDataCon"><span class="hs-identifier hs-var">floatDataCon</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-1489"></span><span>              </span><span class="hs-special">,</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.Prim.html#doublePrimTyConName"><span class="hs-identifier hs-var">doublePrimTyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#doubleDataCon"><span class="hs-identifier hs-var">doubleDataCon</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-1490"></span><span>
</span><span id="line-1491"></span><span class="hs-comment">{- Note [Boxing primitive types]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For a handful of primitive types (Int, Char, Word, Float, Double),
we can readily box and an unboxed version (Int#, Char# etc) using
the corresponding data constructor.  This is useful in a couple
of places, notably let-floating -}</span><span>
</span><span id="line-1497"></span><span>
</span><span id="line-1498"></span><span>
</span><span id="line-1499"></span><span class="annot"><a href="GHC.Builtin.Types.html#charTy"><span class="hs-identifier hs-type">charTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1500"></span><span id="charTy"><span class="annot"><span class="annottext">charTy :: Type
</span><a href="GHC.Builtin.Types.html#charTy"><span class="hs-identifier hs-var hs-var">charTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#charTyCon"><span class="hs-identifier hs-var">charTyCon</span></a></span><span>
</span><span id="line-1501"></span><span>
</span><span id="line-1502"></span><span class="annot"><a href="GHC.Builtin.Types.html#charTyCon"><span class="hs-identifier hs-type">charTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1503"></span><span id="charTyCon"><span class="annot"><span class="annottext">charTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#charTyCon"><span class="hs-identifier hs-var hs-var">charTyCon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#charTyConName"><span class="hs-identifier hs-var">charTyConName</span></a></span><span>
</span><span id="line-1504"></span><span>                   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CType -&gt; Maybe CType
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText -&gt; Maybe Header -&gt; (SourceText, FastString) -&gt; CType
</span><a href="GHC.Types.ForeignCall.html#CType"><span class="hs-identifier hs-var">CType</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Header
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-1505"></span><span>                                  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;HsChar&quot;</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1506"></span><span>                   </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#charDataCon"><span class="hs-identifier hs-var">charDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1507"></span><span class="annot"><a href="GHC.Builtin.Types.html#charDataCon"><span class="hs-identifier hs-type">charDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1508"></span><span id="charDataCon"><span class="annot"><span class="annottext">charDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#charDataCon"><span class="hs-identifier hs-var hs-var">charDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#charDataConName"><span class="hs-identifier hs-var">charDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#charPrimTy"><span class="hs-identifier hs-var">charPrimTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#charTyCon"><span class="hs-identifier hs-var">charTyCon</span></a></span><span>
</span><span id="line-1509"></span><span>
</span><span id="line-1510"></span><span class="annot"><a href="GHC.Builtin.Types.html#stringTy"><span class="hs-identifier hs-type">stringTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1511"></span><span id="stringTy"><span class="annot"><span class="annottext">stringTy :: Type
</span><a href="GHC.Builtin.Types.html#stringTy"><span class="hs-identifier hs-var hs-var">stringTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#stringTyCon"><span class="hs-identifier hs-var">stringTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1512"></span><span>
</span><span id="line-1513"></span><span class="annot"><a href="GHC.Builtin.Types.html#stringTyCon"><span class="hs-identifier hs-type">stringTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1514"></span><span class="hs-comment">-- We have this wired-in so that Haskell literal strings</span><span>
</span><span id="line-1515"></span><span class="hs-comment">-- get type String (in hsLitType), which in turn influences</span><span>
</span><span id="line-1516"></span><span class="hs-comment">-- inferred types and error messages</span><span>
</span><span id="line-1517"></span><span id="stringTyCon"><span class="annot"><span class="annottext">stringTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#stringTyCon"><span class="hs-identifier hs-var hs-var">stringTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyConBinder] -&gt; Type -&gt; [Role] -&gt; Type -&gt; TyCon
</span><a href="GHC.Core.Type.html#buildSynTyCon"><span class="hs-identifier hs-var">buildSynTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#stringTyConName"><span class="hs-identifier hs-var">stringTyConName</span></a></span><span>
</span><span id="line-1518"></span><span>                            </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#liftedTypeKind"><span class="hs-identifier hs-var">liftedTypeKind</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1519"></span><span>                            </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkListTy"><span class="hs-identifier hs-var">mkListTy</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.html#charTy"><span class="hs-identifier hs-var">charTy</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1520"></span><span>
</span><span id="line-1521"></span><span class="annot"><a href="GHC.Builtin.Types.html#intTy"><span class="hs-identifier hs-type">intTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1522"></span><span id="intTy"><span class="annot"><span class="annottext">intTy :: Type
</span><a href="GHC.Builtin.Types.html#intTy"><span class="hs-identifier hs-var hs-var">intTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#intTyCon"><span class="hs-identifier hs-var">intTyCon</span></a></span><span>
</span><span id="line-1523"></span><span>
</span><span id="line-1524"></span><span class="annot"><a href="GHC.Builtin.Types.html#intTyCon"><span class="hs-identifier hs-type">intTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1525"></span><span id="intTyCon"><span class="annot"><span class="annottext">intTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#intTyCon"><span class="hs-identifier hs-var hs-var">intTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#intTyConName"><span class="hs-identifier hs-var">intTyConName</span></a></span><span>
</span><span id="line-1526"></span><span>               </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CType -&gt; Maybe CType
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText -&gt; Maybe Header -&gt; (SourceText, FastString) -&gt; CType
</span><a href="GHC.Types.ForeignCall.html#CType"><span class="hs-identifier hs-var">CType</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Header
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;HsInt&quot;</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1527"></span><span>                 </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#intDataCon"><span class="hs-identifier hs-var">intDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1528"></span><span class="annot"><a href="GHC.Builtin.Types.html#intDataCon"><span class="hs-identifier hs-type">intDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1529"></span><span id="intDataCon"><span class="annot"><span class="annottext">intDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#intDataCon"><span class="hs-identifier hs-var hs-var">intDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#intDataConName"><span class="hs-identifier hs-var">intDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#intPrimTy"><span class="hs-identifier hs-var">intPrimTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#intTyCon"><span class="hs-identifier hs-var">intTyCon</span></a></span><span>
</span><span id="line-1530"></span><span>
</span><span id="line-1531"></span><span class="annot"><a href="GHC.Builtin.Types.html#wordTy"><span class="hs-identifier hs-type">wordTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1532"></span><span id="wordTy"><span class="annot"><span class="annottext">wordTy :: Type
</span><a href="GHC.Builtin.Types.html#wordTy"><span class="hs-identifier hs-var hs-var">wordTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#wordTyCon"><span class="hs-identifier hs-var">wordTyCon</span></a></span><span>
</span><span id="line-1533"></span><span>
</span><span id="line-1534"></span><span class="annot"><a href="GHC.Builtin.Types.html#wordTyCon"><span class="hs-identifier hs-type">wordTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1535"></span><span id="wordTyCon"><span class="annot"><span class="annottext">wordTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#wordTyCon"><span class="hs-identifier hs-var hs-var">wordTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#wordTyConName"><span class="hs-identifier hs-var">wordTyConName</span></a></span><span>
</span><span id="line-1536"></span><span>            </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CType -&gt; Maybe CType
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText -&gt; Maybe Header -&gt; (SourceText, FastString) -&gt; CType
</span><a href="GHC.Types.ForeignCall.html#CType"><span class="hs-identifier hs-var">CType</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Header
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;HsWord&quot;</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1537"></span><span>               </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#wordDataCon"><span class="hs-identifier hs-var">wordDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1538"></span><span class="annot"><a href="GHC.Builtin.Types.html#wordDataCon"><span class="hs-identifier hs-type">wordDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1539"></span><span id="wordDataCon"><span class="annot"><span class="annottext">wordDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#wordDataCon"><span class="hs-identifier hs-var hs-var">wordDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#wordDataConName"><span class="hs-identifier hs-var">wordDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#wordPrimTy"><span class="hs-identifier hs-var">wordPrimTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#wordTyCon"><span class="hs-identifier hs-var">wordTyCon</span></a></span><span>
</span><span id="line-1540"></span><span>
</span><span id="line-1541"></span><span class="annot"><a href="GHC.Builtin.Types.html#word8Ty"><span class="hs-identifier hs-type">word8Ty</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1542"></span><span id="word8Ty"><span class="annot"><span class="annottext">word8Ty :: Type
</span><a href="GHC.Builtin.Types.html#word8Ty"><span class="hs-identifier hs-var hs-var">word8Ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#word8TyCon"><span class="hs-identifier hs-var">word8TyCon</span></a></span><span>
</span><span id="line-1543"></span><span>
</span><span id="line-1544"></span><span class="annot"><a href="GHC.Builtin.Types.html#word8TyCon"><span class="hs-identifier hs-type">word8TyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1545"></span><span id="word8TyCon"><span class="annot"><span class="annottext">word8TyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#word8TyCon"><span class="hs-identifier hs-var hs-var">word8TyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#word8TyConName"><span class="hs-identifier hs-var">word8TyConName</span></a></span><span>
</span><span id="line-1546"></span><span>                     </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CType -&gt; Maybe CType
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText -&gt; Maybe Header -&gt; (SourceText, FastString) -&gt; CType
</span><a href="GHC.Types.ForeignCall.html#CType"><span class="hs-identifier hs-var">CType</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Header
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-1547"></span><span>                            </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;HsWord8&quot;</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1548"></span><span>                     </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#word8DataCon"><span class="hs-identifier hs-var">word8DataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1549"></span><span class="annot"><a href="GHC.Builtin.Types.html#word8DataCon"><span class="hs-identifier hs-type">word8DataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1550"></span><span id="word8DataCon"><span class="annot"><span class="annottext">word8DataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#word8DataCon"><span class="hs-identifier hs-var hs-var">word8DataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#word8DataConName"><span class="hs-identifier hs-var">word8DataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#wordPrimTy"><span class="hs-identifier hs-var">wordPrimTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#word8TyCon"><span class="hs-identifier hs-var">word8TyCon</span></a></span><span>
</span><span id="line-1551"></span><span>
</span><span id="line-1552"></span><span class="annot"><a href="GHC.Builtin.Types.html#floatTy"><span class="hs-identifier hs-type">floatTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1553"></span><span id="floatTy"><span class="annot"><span class="annottext">floatTy :: Type
</span><a href="GHC.Builtin.Types.html#floatTy"><span class="hs-identifier hs-var hs-var">floatTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#floatTyCon"><span class="hs-identifier hs-var">floatTyCon</span></a></span><span>
</span><span id="line-1554"></span><span>
</span><span id="line-1555"></span><span class="annot"><a href="GHC.Builtin.Types.html#floatTyCon"><span class="hs-identifier hs-type">floatTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1556"></span><span id="floatTyCon"><span class="annot"><span class="annottext">floatTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#floatTyCon"><span class="hs-identifier hs-var hs-var">floatTyCon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#floatTyConName"><span class="hs-identifier hs-var">floatTyConName</span></a></span><span>
</span><span id="line-1557"></span><span>                      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CType -&gt; Maybe CType
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText -&gt; Maybe Header -&gt; (SourceText, FastString) -&gt; CType
</span><a href="GHC.Types.ForeignCall.html#CType"><span class="hs-identifier hs-var">CType</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Header
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-1558"></span><span>                             </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;HsFloat&quot;</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1559"></span><span>                      </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#floatDataCon"><span class="hs-identifier hs-var">floatDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1560"></span><span class="annot"><a href="GHC.Builtin.Types.html#floatDataCon"><span class="hs-identifier hs-type">floatDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1561"></span><span id="floatDataCon"><span class="annot"><span class="annottext">floatDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#floatDataCon"><span class="hs-identifier hs-var hs-var">floatDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span>         </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#floatDataConName"><span class="hs-identifier hs-var">floatDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#floatPrimTy"><span class="hs-identifier hs-var">floatPrimTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#floatTyCon"><span class="hs-identifier hs-var">floatTyCon</span></a></span><span>
</span><span id="line-1562"></span><span>
</span><span id="line-1563"></span><span class="annot"><a href="GHC.Builtin.Types.html#doubleTy"><span class="hs-identifier hs-type">doubleTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1564"></span><span id="doubleTy"><span class="annot"><span class="annottext">doubleTy :: Type
</span><a href="GHC.Builtin.Types.html#doubleTy"><span class="hs-identifier hs-var hs-var">doubleTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#doubleTyCon"><span class="hs-identifier hs-var">doubleTyCon</span></a></span><span>
</span><span id="line-1565"></span><span>
</span><span id="line-1566"></span><span class="annot"><a href="GHC.Builtin.Types.html#doubleTyCon"><span class="hs-identifier hs-type">doubleTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1567"></span><span id="doubleTyCon"><span class="annot"><span class="annottext">doubleTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#doubleTyCon"><span class="hs-identifier hs-var hs-var">doubleTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#doubleTyConName"><span class="hs-identifier hs-var">doubleTyConName</span></a></span><span>
</span><span id="line-1568"></span><span>                      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CType -&gt; Maybe CType
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText -&gt; Maybe Header -&gt; (SourceText, FastString) -&gt; CType
</span><a href="GHC.Types.ForeignCall.html#CType"><span class="hs-identifier hs-var">CType</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Header
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-1569"></span><span>                             </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;HsDouble&quot;</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1570"></span><span>                      </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#doubleDataCon"><span class="hs-identifier hs-var">doubleDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1571"></span><span>
</span><span id="line-1572"></span><span class="annot"><a href="GHC.Builtin.Types.html#doubleDataCon"><span class="hs-identifier hs-type">doubleDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1573"></span><span id="doubleDataCon"><span class="annot"><span class="annottext">doubleDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#doubleDataCon"><span class="hs-identifier hs-var hs-var">doubleDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#doubleDataConName"><span class="hs-identifier hs-var">doubleDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#doublePrimTy"><span class="hs-identifier hs-var">doublePrimTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#doubleTyCon"><span class="hs-identifier hs-var">doubleTyCon</span></a></span><span>
</span><span id="line-1574"></span><span>
</span><span id="line-1575"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
              The Bool type
*                                                                      *
************************************************************************

An ordinary enumeration type, but deeply wired in.  There are no
magical operations on @Bool@ (just the regular Prelude code).

{\em BEGIN IDLE SPECULATION BY SIMON}

This is not the only way to encode @Bool@.  A more obvious coding makes
@Bool@ just a boxed up version of @Bool#@, like this:
\begin{verbatim}
type Bool# = Int#
data Bool = MkBool Bool#
\end{verbatim}

Unfortunately, this doesn't correspond to what the Report says @Bool@
looks like!  Furthermore, we get slightly less efficient code (I
think) with this coding. @gtInt@ would look like this:

\begin{verbatim}
gtInt :: Int -&gt; Int -&gt; Bool
gtInt x y = case x of I# x# -&gt;
            case y of I# y# -&gt;
            case (gtIntPrim x# y#) of
                b# -&gt; MkBool b#
\end{verbatim}

Notice that the result of the @gtIntPrim@ comparison has to be turned
into an integer (here called @b#@), and returned in a @MkBool@ box.

The @if@ expression would compile to this:
\begin{verbatim}
case (gtInt x y) of
  MkBool b# -&gt; case b# of { 1# -&gt; e1; 0# -&gt; e2 }
\end{verbatim}

I think this code is a little less efficient than the previous code,
but I'm not certain.  At all events, corresponding with the Report is
important.  The interesting thing is that the language is expressive
enough to describe more than one alternative; and that a type doesn't
necessarily need to be a straightforwardly boxed version of its
primitive counterpart.

{\em END IDLE SPECULATION BY SIMON}
-}</span><span>
</span><span id="line-1624"></span><span>
</span><span id="line-1625"></span><span class="annot"><a href="GHC.Builtin.Types.html#boolTy"><span class="hs-identifier hs-type">boolTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1626"></span><span id="boolTy"><span class="annot"><span class="annottext">boolTy :: Type
</span><a href="GHC.Builtin.Types.html#boolTy"><span class="hs-identifier hs-var hs-var">boolTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#boolTyCon"><span class="hs-identifier hs-var">boolTyCon</span></a></span><span>
</span><span id="line-1627"></span><span>
</span><span id="line-1628"></span><span class="annot"><a href="GHC.Builtin.Types.html#boolTyCon"><span class="hs-identifier hs-type">boolTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1629"></span><span id="boolTyCon"><span class="annot"><span class="annottext">boolTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#boolTyCon"><span class="hs-identifier hs-var hs-var">boolTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#boolTyConName"><span class="hs-identifier hs-var">boolTyConName</span></a></span><span>
</span><span id="line-1630"></span><span>                    </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CType -&gt; Maybe CType
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText -&gt; Maybe Header -&gt; (SourceText, FastString) -&gt; CType
</span><a href="GHC.Types.ForeignCall.html#CType"><span class="hs-identifier hs-var">CType</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Header
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-1631"></span><span>                           </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;HsBool&quot;</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1632"></span><span>                    </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#falseDataCon"><span class="hs-identifier hs-var">falseDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#trueDataCon"><span class="hs-identifier hs-var">trueDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1633"></span><span>
</span><span id="line-1634"></span><span class="annot"><a href="GHC.Builtin.Types.html#falseDataCon"><span class="hs-identifier hs-type">falseDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#trueDataCon"><span class="hs-identifier hs-type">trueDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1635"></span><span id="falseDataCon"><span class="annot"><span class="annottext">falseDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#falseDataCon"><span class="hs-identifier hs-var hs-var">falseDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#falseDataConName"><span class="hs-identifier hs-var">falseDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#boolTyCon"><span class="hs-identifier hs-var">boolTyCon</span></a></span><span>
</span><span id="line-1636"></span><span id="trueDataCon"><span class="annot"><span class="annottext">trueDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#trueDataCon"><span class="hs-identifier hs-var hs-var">trueDataCon</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#trueDataConName"><span class="hs-identifier hs-var">trueDataConName</span></a></span><span>  </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#boolTyCon"><span class="hs-identifier hs-var">boolTyCon</span></a></span><span>
</span><span id="line-1637"></span><span>
</span><span id="line-1638"></span><span class="annot"><a href="GHC.Builtin.Types.html#falseDataConId"><span class="hs-identifier hs-type">falseDataConId</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#trueDataConId"><span class="hs-identifier hs-type">trueDataConId</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-1639"></span><span id="falseDataConId"><span class="annot"><span class="annottext">falseDataConId :: TyVar
</span><a href="GHC.Builtin.Types.html#falseDataConId"><span class="hs-identifier hs-var hs-var">falseDataConId</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyVar
</span><a href="GHC.Core.DataCon.html#dataConWorkId"><span class="hs-identifier hs-var">dataConWorkId</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#falseDataCon"><span class="hs-identifier hs-var">falseDataCon</span></a></span><span>
</span><span id="line-1640"></span><span id="trueDataConId"><span class="annot"><span class="annottext">trueDataConId :: TyVar
</span><a href="GHC.Builtin.Types.html#trueDataConId"><span class="hs-identifier hs-var hs-var">trueDataConId</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyVar
</span><a href="GHC.Core.DataCon.html#dataConWorkId"><span class="hs-identifier hs-var">dataConWorkId</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#trueDataCon"><span class="hs-identifier hs-var">trueDataCon</span></a></span><span>
</span><span id="line-1641"></span><span>
</span><span id="line-1642"></span><span class="annot"><a href="GHC.Builtin.Types.html#orderingTyCon"><span class="hs-identifier hs-type">orderingTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1643"></span><span id="orderingTyCon"><span class="annot"><span class="annottext">orderingTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#orderingTyCon"><span class="hs-identifier hs-var hs-var">orderingTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Names.html#orderingTyConName"><span class="hs-identifier hs-var">orderingTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-1644"></span><span>                        </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#ordLTDataCon"><span class="hs-identifier hs-var">ordLTDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#ordEQDataCon"><span class="hs-identifier hs-var">ordEQDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#ordGTDataCon"><span class="hs-identifier hs-var">ordGTDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1645"></span><span>
</span><span id="line-1646"></span><span class="annot"><a href="GHC.Builtin.Types.html#ordLTDataCon"><span class="hs-identifier hs-type">ordLTDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#ordEQDataCon"><span class="hs-identifier hs-type">ordEQDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#ordGTDataCon"><span class="hs-identifier hs-type">ordGTDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1647"></span><span id="ordLTDataCon"><span class="annot"><span class="annottext">ordLTDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#ordLTDataCon"><span class="hs-identifier hs-var hs-var">ordLTDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Names.html#ordLTDataConName"><span class="hs-identifier hs-var">ordLTDataConName</span></a></span><span>  </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#orderingTyCon"><span class="hs-identifier hs-var">orderingTyCon</span></a></span><span>
</span><span id="line-1648"></span><span id="ordEQDataCon"><span class="annot"><span class="annottext">ordEQDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#ordEQDataCon"><span class="hs-identifier hs-var hs-var">ordEQDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Names.html#ordEQDataConName"><span class="hs-identifier hs-var">ordEQDataConName</span></a></span><span>  </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#orderingTyCon"><span class="hs-identifier hs-var">orderingTyCon</span></a></span><span>
</span><span id="line-1649"></span><span id="ordGTDataCon"><span class="annot"><span class="annottext">ordGTDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#ordGTDataCon"><span class="hs-identifier hs-var hs-var">ordGTDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Names.html#ordGTDataConName"><span class="hs-identifier hs-var">ordGTDataConName</span></a></span><span>  </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#orderingTyCon"><span class="hs-identifier hs-var">orderingTyCon</span></a></span><span>
</span><span id="line-1650"></span><span>
</span><span id="line-1651"></span><span class="annot"><a href="GHC.Builtin.Types.html#ordLTDataConId"><span class="hs-identifier hs-type">ordLTDataConId</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#ordEQDataConId"><span class="hs-identifier hs-type">ordEQDataConId</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#ordGTDataConId"><span class="hs-identifier hs-type">ordGTDataConId</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-1652"></span><span id="ordLTDataConId"><span class="annot"><span class="annottext">ordLTDataConId :: TyVar
</span><a href="GHC.Builtin.Types.html#ordLTDataConId"><span class="hs-identifier hs-var hs-var">ordLTDataConId</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyVar
</span><a href="GHC.Core.DataCon.html#dataConWorkId"><span class="hs-identifier hs-var">dataConWorkId</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#ordLTDataCon"><span class="hs-identifier hs-var">ordLTDataCon</span></a></span><span>
</span><span id="line-1653"></span><span id="ordEQDataConId"><span class="annot"><span class="annottext">ordEQDataConId :: TyVar
</span><a href="GHC.Builtin.Types.html#ordEQDataConId"><span class="hs-identifier hs-var hs-var">ordEQDataConId</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyVar
</span><a href="GHC.Core.DataCon.html#dataConWorkId"><span class="hs-identifier hs-var">dataConWorkId</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#ordEQDataCon"><span class="hs-identifier hs-var">ordEQDataCon</span></a></span><span>
</span><span id="line-1654"></span><span id="ordGTDataConId"><span class="annot"><span class="annottext">ordGTDataConId :: TyVar
</span><a href="GHC.Builtin.Types.html#ordGTDataConId"><span class="hs-identifier hs-var hs-var">ordGTDataConId</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyVar
</span><a href="GHC.Core.DataCon.html#dataConWorkId"><span class="hs-identifier hs-var">dataConWorkId</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#ordGTDataCon"><span class="hs-identifier hs-var">ordGTDataCon</span></a></span><span>
</span><span id="line-1655"></span><span>
</span><span id="line-1656"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
            The List type
   Special syntax, deeply wired in,
   but otherwise an ordinary algebraic data type
*                                                                      *
************************************************************************

       data [] a = [] | a : (List a)
-}</span><span>
</span><span id="line-1667"></span><span>
</span><span id="line-1668"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkListTy"><span class="hs-identifier hs-type">mkListTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1669"></span><span id="mkListTy"><span class="annot"><span class="annottext">mkListTy :: Type -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkListTy"><span class="hs-identifier hs-var hs-var">mkListTy</span></a></span></span><span> </span><span id="local-6989586621680820869"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820869"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#listTyCon"><span class="hs-identifier hs-var">listTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820869"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1670"></span><span>
</span><span id="line-1671"></span><span class="annot"><a href="GHC.Builtin.Types.html#listTyCon"><span class="hs-identifier hs-type">listTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1672"></span><span id="listTyCon"><span class="annot"><span class="annottext">listTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#listTyCon"><span class="hs-identifier hs-var hs-var">listTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#listTyConName"><span class="hs-identifier hs-var">listTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">TyVar
</span><a href="GHC.Builtin.Types.Prim.html#alphaTyVar"><span class="hs-identifier hs-var">alphaTyVar</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#nilDataCon"><span class="hs-identifier hs-var">nilDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#consDataCon"><span class="hs-identifier hs-var">consDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1673"></span><span>
</span><span id="line-1674"></span><span class="hs-comment">-- See also Note [Empty lists] in GHC.Hs.Expr.</span><span>
</span><span id="line-1675"></span><span class="annot"><a href="GHC.Builtin.Types.html#nilDataCon"><span class="hs-identifier hs-type">nilDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1676"></span><span id="nilDataCon"><span class="annot"><span class="annottext">nilDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#nilDataCon"><span class="hs-identifier hs-var hs-var">nilDataCon</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#nilDataConName"><span class="hs-identifier hs-var">nilDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="GHC.Builtin.Types.html#alpha_tyvar"><span class="hs-identifier hs-var">alpha_tyvar</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#listTyCon"><span class="hs-identifier hs-var">listTyCon</span></a></span><span>
</span><span id="line-1677"></span><span>
</span><span id="line-1678"></span><span class="annot"><a href="GHC.Builtin.Types.html#consDataCon"><span class="hs-identifier hs-type">consDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1679"></span><span id="consDataCon"><span class="annot"><span class="annottext">consDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#consDataCon"><span class="hs-identifier hs-var hs-var">consDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
-&gt; Name
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [TyVar]
-&gt; [Scaled Type]
-&gt; TyCon
-&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataConWithFixity"><span class="hs-identifier hs-var">pcDataConWithFixity</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span> </span><span class="hs-comment">{- Declared infix -}</span><span>
</span><span id="line-1680"></span><span>               </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#consDataConName"><span class="hs-identifier hs-var">consDataConName</span></a></span><span>
</span><span id="line-1681"></span><span>               </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="GHC.Builtin.Types.html#alpha_tyvar"><span class="hs-identifier hs-var">alpha_tyvar</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="GHC.Builtin.Types.html#alpha_tyvar"><span class="hs-identifier hs-var">alpha_tyvar</span></a></span><span>
</span><span id="line-1682"></span><span>               </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Type -&gt; Scaled Type) -&gt; [Type] -&gt; [Scaled Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; Scaled Type
forall a. a -&gt; Scaled a
</span><a href="GHC.Core.Type.html#linear"><span class="hs-identifier hs-var">linear</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#alphaTy"><span class="hs-identifier hs-var">alphaTy</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#listTyCon"><span class="hs-identifier hs-var">listTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="GHC.Builtin.Types.html#alpha_ty"><span class="hs-identifier hs-var">alpha_ty</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#listTyCon"><span class="hs-identifier hs-var">listTyCon</span></a></span><span>
</span><span id="line-1683"></span><span class="hs-comment">-- Interesting: polymorphic recursion would help here.</span><span>
</span><span id="line-1684"></span><span class="hs-comment">-- We can't use (mkListTy alphaTy) in the defn of consDataCon, else mkListTy</span><span>
</span><span id="line-1685"></span><span class="hs-comment">-- gets the over-specific type (Type -&gt; Type)</span><span>
</span><span id="line-1686"></span><span>
</span><span id="line-1687"></span><span class="hs-comment">-- Wired-in type Maybe</span><span>
</span><span id="line-1688"></span><span>
</span><span id="line-1689"></span><span class="annot"><a href="GHC.Builtin.Types.html#maybeTyCon"><span class="hs-identifier hs-type">maybeTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1690"></span><span id="maybeTyCon"><span class="annot"><span class="annottext">maybeTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#maybeTyCon"><span class="hs-identifier hs-var hs-var">maybeTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#maybeTyConName"><span class="hs-identifier hs-var">maybeTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="GHC.Builtin.Types.html#alpha_tyvar"><span class="hs-identifier hs-var">alpha_tyvar</span></a></span><span>
</span><span id="line-1691"></span><span>                     </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#nothingDataCon"><span class="hs-identifier hs-var">nothingDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#justDataCon"><span class="hs-identifier hs-var">justDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1692"></span><span>
</span><span id="line-1693"></span><span class="annot"><a href="GHC.Builtin.Types.html#nothingDataCon"><span class="hs-identifier hs-type">nothingDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1694"></span><span id="nothingDataCon"><span class="annot"><span class="annottext">nothingDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#nothingDataCon"><span class="hs-identifier hs-var hs-var">nothingDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#nothingDataConName"><span class="hs-identifier hs-var">nothingDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="GHC.Builtin.Types.html#alpha_tyvar"><span class="hs-identifier hs-var">alpha_tyvar</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#maybeTyCon"><span class="hs-identifier hs-var">maybeTyCon</span></a></span><span>
</span><span id="line-1695"></span><span>
</span><span id="line-1696"></span><span class="annot"><a href="GHC.Builtin.Types.html#justDataCon"><span class="hs-identifier hs-type">justDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1697"></span><span id="justDataCon"><span class="annot"><span class="annottext">justDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#justDataCon"><span class="hs-identifier hs-var hs-var">justDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#justDataConName"><span class="hs-identifier hs-var">justDataConName</span></a></span><span> </span><span class="annot"><span class="annottext">[TyVar]
</span><a href="GHC.Builtin.Types.html#alpha_tyvar"><span class="hs-identifier hs-var">alpha_tyvar</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#alphaTy"><span class="hs-identifier hs-var">alphaTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#maybeTyCon"><span class="hs-identifier hs-var">maybeTyCon</span></a></span><span>
</span><span id="line-1698"></span><span>
</span><span id="line-1699"></span><span class="hs-comment">{-
** *********************************************************************
*                                                                      *
            The tuple types
*                                                                      *
************************************************************************

The tuple types are definitely magic, because they form an infinite
family.

\begin{itemize}
\item
They have a special family of type constructors, of type @TyCon@
These contain the tycon arity, but don't require a Unique.

\item
They have a special family of constructors, of type
@Id@. Again these contain their arity but don't need a Unique.

\item
There should be a magic way of generating the info tables and
entry code for all tuples.

But at the moment we just compile a Haskell source
file\srcloc{lib/prelude/...} containing declarations like:
\begin{verbatim}
data Tuple0             = Tup0
data Tuple2  a b        = Tup2  a b
data Tuple3  a b c      = Tup3  a b c
data Tuple4  a b c d    = Tup4  a b c d
...
\end{verbatim}
The print-names associated with the magic @Id@s for tuple constructors
``just happen'' to be the same as those generated by these
declarations.

\item
The instance environment should have a magic way to know
that each tuple type is an instances of classes @Eq@, @Ix@, @Ord@ and
so on. \ToDo{Not implemented yet.}

\item
There should also be a way to generate the appropriate code for each
of these instances, but (like the info tables and entry code) it is
done by enumeration\srcloc{lib/prelude/InTup?.hs}.
\end{itemize}
-}</span><span>
</span><span id="line-1746"></span><span>
</span><span id="line-1747"></span><span class="hs-comment">-- | Make a tuple type. The list of types should /not/ include any</span><span>
</span><span id="line-1748"></span><span class="hs-comment">-- RuntimeRep specifications. Boxed 1-tuples are flattened.</span><span>
</span><span id="line-1749"></span><span class="hs-comment">-- See Note [One-tuples]</span><span>
</span><span id="line-1750"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkTupleTy"><span class="hs-identifier hs-type">mkTupleTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Boxity"><span class="hs-identifier hs-type">Boxity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1751"></span><span class="hs-comment">-- Special case for *boxed* 1-tuples, which are represented by the type itself</span><span>
</span><span id="line-1752"></span><span id="mkTupleTy"><span class="annot"><span class="annottext">mkTupleTy :: Boxity -&gt; [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkTupleTy"><span class="hs-identifier hs-var hs-var">mkTupleTy</span></a></span></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span>   </span><span class="hs-special">[</span><span id="local-6989586621680820868"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820868"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820868"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-1753"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkTupleTy"><span class="hs-identifier hs-var">mkTupleTy</span></a></span><span> </span><span id="local-6989586621680820867"><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680820867"><span class="hs-identifier hs-var">boxity</span></a></span></span><span>  </span><span id="local-6989586621680820866"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820866"><span class="hs-identifier hs-var">tys</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkTupleTy1"><span class="hs-identifier hs-var">mkTupleTy1</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="#local-6989586621680820867"><span class="hs-identifier hs-var">boxity</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820866"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-1754"></span><span>
</span><span id="line-1755"></span><span class="hs-comment">-- | Make a tuple type. The list of types should /not/ include any</span><span>
</span><span id="line-1756"></span><span class="hs-comment">-- RuntimeRep specifications. Boxed 1-tuples are *not* flattened.</span><span>
</span><span id="line-1757"></span><span class="hs-comment">-- See Note [One-tuples] and Note [Don't flatten tuples from HsSyn]</span><span>
</span><span id="line-1758"></span><span class="hs-comment">-- in &quot;GHC.Core.Make&quot;</span><span>
</span><span id="line-1759"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkTupleTy1"><span class="hs-identifier hs-type">mkTupleTy1</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Boxity"><span class="hs-identifier hs-type">Boxity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1760"></span><span id="mkTupleTy1"><span class="annot"><span class="annottext">mkTupleTy1 :: Boxity -&gt; [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkTupleTy1"><span class="hs-identifier hs-var hs-var">mkTupleTy1</span></a></span></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span>   </span><span id="local-6989586621680820865"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820865"><span class="hs-identifier hs-var">tys</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-var">tupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Type] -&gt; Arity
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Arity
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820865"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820865"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-1761"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkTupleTy1"><span class="hs-identifier hs-var">mkTupleTy1</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span id="local-6989586621680820863"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820863"><span class="hs-identifier hs-var">tys</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Boxity -&gt; Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#tupleTyCon"><span class="hs-identifier hs-var">tupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Unboxed"><span class="hs-identifier hs-var">Unboxed</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Type] -&gt; Arity
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Arity
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820863"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1762"></span><span>                                         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Type -&gt; Type) -&gt; [Type] -&gt; [Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; Type -&gt; Type
Type -&gt; Type
</span><a href="GHC.Core.Type.html#getRuntimeRep"><span class="hs-identifier hs-var">getRuntimeRep</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820863"><span class="hs-identifier hs-var">tys</span></a></span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [Type] -&gt; [Type]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820863"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1763"></span><span>
</span><span id="line-1764"></span><span class="hs-comment">-- | Build the type of a small tuple that holds the specified type of thing</span><span>
</span><span id="line-1765"></span><span class="hs-comment">-- Flattens 1-tuples. See Note [One-tuples].</span><span>
</span><span id="line-1766"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkBoxedTupleTy"><span class="hs-identifier hs-type">mkBoxedTupleTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1767"></span><span id="mkBoxedTupleTy"><span class="annot"><span class="annottext">mkBoxedTupleTy :: [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkBoxedTupleTy"><span class="hs-identifier hs-var hs-var">mkBoxedTupleTy</span></a></span></span><span> </span><span id="local-6989586621680820861"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820861"><span class="hs-identifier hs-var">tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkTupleTy"><span class="hs-identifier hs-var">mkTupleTy</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820861"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-1768"></span><span>
</span><span id="line-1769"></span><span class="annot"><a href="GHC.Builtin.Types.html#unitTy"><span class="hs-identifier hs-type">unitTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1770"></span><span id="unitTy"><span class="annot"><span class="annottext">unitTy :: Type
</span><a href="GHC.Builtin.Types.html#unitTy"><span class="hs-identifier hs-var hs-var">unitTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Boxity -&gt; [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkTupleTy"><span class="hs-identifier hs-var">mkTupleTy</span></a></span><span> </span><span class="annot"><span class="annottext">Boxity
</span><a href="GHC.Types.Basic.html#Boxed"><span class="hs-identifier hs-var">Boxed</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1771"></span><span>
</span><span id="line-1772"></span><span class="hs-comment">{- *********************************************************************
*                                                                      *
            The sum types
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-1778"></span><span>
</span><span id="line-1779"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkSumTy"><span class="hs-identifier hs-type">mkSumTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1780"></span><span id="mkSumTy"><span class="annot"><span class="annottext">mkSumTy :: [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkSumTy"><span class="hs-identifier hs-var hs-var">mkSumTy</span></a></span></span><span> </span><span id="local-6989586621680820860"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820860"><span class="hs-identifier hs-var">tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Arity -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#sumTyCon"><span class="hs-identifier hs-var">sumTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Type] -&gt; Arity
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Arity
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820860"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1781"></span><span>                         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Type -&gt; Type) -&gt; [Type] -&gt; [Type]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; Type -&gt; Type
Type -&gt; Type
</span><a href="GHC.Core.Type.html#getRuntimeRep"><span class="hs-identifier hs-var">getRuntimeRep</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820860"><span class="hs-identifier hs-var">tys</span></a></span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; [Type] -&gt; [Type]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820860"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1782"></span><span>
</span><span id="line-1783"></span><span class="hs-comment">-- Promoted Booleans</span><span>
</span><span id="line-1784"></span><span>
</span><span id="line-1785"></span><span class="annot"><a href="GHC.Builtin.Types.html#promotedFalseDataCon"><span class="hs-identifier hs-type">promotedFalseDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedTrueDataCon"><span class="hs-identifier hs-type">promotedTrueDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1786"></span><span id="promotedTrueDataCon"><span class="annot"><span class="annottext">promotedTrueDataCon :: TyCon
</span><a href="GHC.Builtin.Types.html#promotedTrueDataCon"><span class="hs-identifier hs-var hs-var">promotedTrueDataCon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#trueDataCon"><span class="hs-identifier hs-var">trueDataCon</span></a></span><span>
</span><span id="line-1787"></span><span id="promotedFalseDataCon"><span class="annot"><span class="annottext">promotedFalseDataCon :: TyCon
</span><a href="GHC.Builtin.Types.html#promotedFalseDataCon"><span class="hs-identifier hs-var hs-var">promotedFalseDataCon</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#falseDataCon"><span class="hs-identifier hs-var">falseDataCon</span></a></span><span>
</span><span id="line-1788"></span><span>
</span><span id="line-1789"></span><span class="hs-comment">-- Promoted Maybe</span><span>
</span><span id="line-1790"></span><span class="annot"><a href="GHC.Builtin.Types.html#promotedNothingDataCon"><span class="hs-identifier hs-type">promotedNothingDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedJustDataCon"><span class="hs-identifier hs-type">promotedJustDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1791"></span><span id="promotedNothingDataCon"><span class="annot"><span class="annottext">promotedNothingDataCon :: TyCon
</span><a href="GHC.Builtin.Types.html#promotedNothingDataCon"><span class="hs-identifier hs-var hs-var">promotedNothingDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#nothingDataCon"><span class="hs-identifier hs-var">nothingDataCon</span></a></span><span>
</span><span id="line-1792"></span><span id="promotedJustDataCon"><span class="annot"><span class="annottext">promotedJustDataCon :: TyCon
</span><a href="GHC.Builtin.Types.html#promotedJustDataCon"><span class="hs-identifier hs-var hs-var">promotedJustDataCon</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#justDataCon"><span class="hs-identifier hs-var">justDataCon</span></a></span><span>
</span><span id="line-1793"></span><span>
</span><span id="line-1794"></span><span class="hs-comment">-- Promoted Ordering</span><span>
</span><span id="line-1795"></span><span>
</span><span id="line-1796"></span><span class="annot"><a href="GHC.Builtin.Types.html#promotedLTDataCon"><span class="hs-identifier hs-type">promotedLTDataCon</span></a></span><span>
</span><span id="line-1797"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedEQDataCon"><span class="hs-identifier hs-type">promotedEQDataCon</span></a></span><span>
</span><span id="line-1798"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedGTDataCon"><span class="hs-identifier hs-type">promotedGTDataCon</span></a></span><span>
</span><span id="line-1799"></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1800"></span><span id="promotedLTDataCon"><span class="annot"><span class="annottext">promotedLTDataCon :: TyCon
</span><a href="GHC.Builtin.Types.html#promotedLTDataCon"><span class="hs-identifier hs-var hs-var">promotedLTDataCon</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#ordLTDataCon"><span class="hs-identifier hs-var">ordLTDataCon</span></a></span><span>
</span><span id="line-1801"></span><span id="promotedEQDataCon"><span class="annot"><span class="annottext">promotedEQDataCon :: TyCon
</span><a href="GHC.Builtin.Types.html#promotedEQDataCon"><span class="hs-identifier hs-var hs-var">promotedEQDataCon</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#ordEQDataCon"><span class="hs-identifier hs-var">ordEQDataCon</span></a></span><span>
</span><span id="line-1802"></span><span id="promotedGTDataCon"><span class="annot"><span class="annottext">promotedGTDataCon :: TyCon
</span><a href="GHC.Builtin.Types.html#promotedGTDataCon"><span class="hs-identifier hs-var hs-var">promotedGTDataCon</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#ordGTDataCon"><span class="hs-identifier hs-var">ordGTDataCon</span></a></span><span>
</span><span id="line-1803"></span><span>
</span><span id="line-1804"></span><span class="hs-comment">-- Promoted List</span><span>
</span><span id="line-1805"></span><span class="annot"><a href="GHC.Builtin.Types.html#promotedConsDataCon"><span class="hs-identifier hs-type">promotedConsDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#promotedNilDataCon"><span class="hs-identifier hs-type">promotedNilDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1806"></span><span id="promotedConsDataCon"><span class="annot"><span class="annottext">promotedConsDataCon :: TyCon
</span><a href="GHC.Builtin.Types.html#promotedConsDataCon"><span class="hs-identifier hs-var hs-var">promotedConsDataCon</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#consDataCon"><span class="hs-identifier hs-var">consDataCon</span></a></span><span>
</span><span id="line-1807"></span><span id="promotedNilDataCon"><span class="annot"><span class="annottext">promotedNilDataCon :: TyCon
</span><a href="GHC.Builtin.Types.html#promotedNilDataCon"><span class="hs-identifier hs-var hs-var">promotedNilDataCon</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#promoteDataCon"><span class="hs-identifier hs-var">promoteDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#nilDataCon"><span class="hs-identifier hs-var">nilDataCon</span></a></span><span>
</span><span id="line-1808"></span><span>
</span><span id="line-1809"></span><span class="hs-comment">-- | Make a *promoted* list.</span><span>
</span><span id="line-1810"></span><span class="annot"><a href="GHC.Builtin.Types.html#mkPromotedListTy"><span class="hs-identifier hs-type">mkPromotedListTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span>   </span><span class="hs-comment">-- ^ of the elements of the list</span><span>
</span><span id="line-1811"></span><span>                 </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-comment">-- ^ elements</span><span>
</span><span id="line-1812"></span><span>                 </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1813"></span><span id="mkPromotedListTy"><span class="annot"><span class="annottext">mkPromotedListTy :: Type -&gt; [Type] -&gt; Type
</span><a href="GHC.Builtin.Types.html#mkPromotedListTy"><span class="hs-identifier hs-var hs-var">mkPromotedListTy</span></a></span></span><span> </span><span id="local-6989586621680820859"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820859"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680820858"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820858"><span class="hs-identifier hs-var">tys</span></a></span></span><span>
</span><span id="line-1814"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Type -&gt; Type -&gt; Type) -&gt; Type -&gt; [Type] -&gt; Type
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type -&gt; Type
</span><a href="#local-6989586621680820856"><span class="hs-identifier hs-var">cons</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820855"><span class="hs-identifier hs-var">nil</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680820858"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-1815"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1816"></span><span>    </span><span class="annot"><a href="#local-6989586621680820856"><span class="hs-identifier hs-type">cons</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>  </span><span class="hs-comment">-- element</span><span>
</span><span id="line-1817"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>  </span><span class="hs-comment">-- list</span><span>
</span><span id="line-1818"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1819"></span><span>    </span><span id="local-6989586621680820856"><span class="annot"><span class="annottext">cons :: Type -&gt; Type -&gt; Type
</span><a href="#local-6989586621680820856"><span class="hs-identifier hs-var hs-var">cons</span></a></span></span><span> </span><span id="local-6989586621680820854"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820854"><span class="hs-identifier hs-var">elt</span></a></span></span><span> </span><span id="local-6989586621680820853"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820853"><span class="hs-identifier hs-var">list</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#promotedConsDataCon"><span class="hs-identifier hs-var">promotedConsDataCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820859"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820854"><span class="hs-identifier hs-var">elt</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820853"><span class="hs-identifier hs-var">list</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1820"></span><span>
</span><span id="line-1821"></span><span>    </span><span class="annot"><a href="#local-6989586621680820855"><span class="hs-identifier hs-type">nil</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1822"></span><span>    </span><span id="local-6989586621680820855"><span class="annot"><span class="annottext">nil :: Type
</span><a href="#local-6989586621680820855"><span class="hs-identifier hs-var hs-var">nil</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConApp"><span class="hs-identifier hs-var">mkTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#promotedNilDataCon"><span class="hs-identifier hs-var">promotedNilDataCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820859"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1823"></span><span>
</span><span id="line-1824"></span><span class="hs-comment">-- | Extract the elements of a promoted list. Panics if the type is not a</span><span>
</span><span id="line-1825"></span><span class="hs-comment">-- promoted list</span><span>
</span><span id="line-1826"></span><span class="annot"><a href="GHC.Builtin.Types.html#extractPromotedList"><span class="hs-identifier hs-type">extractPromotedList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>    </span><span class="hs-comment">-- ^ The promoted list</span><span>
</span><span id="line-1827"></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1828"></span><span id="extractPromotedList"><span class="annot"><span class="annottext">extractPromotedList :: Type -&gt; [Type]
</span><a href="GHC.Builtin.Types.html#extractPromotedList"><span class="hs-identifier hs-var hs-var">extractPromotedList</span></a></span></span><span> </span><span id="local-6989586621680820852"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820852"><span class="hs-identifier hs-var">tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; [Type]
</span><a href="#local-6989586621680820851"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820852"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-1829"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1830"></span><span>    </span><span id="local-6989586621680820851"><span class="annot"><span class="annottext">go :: Type -&gt; [Type]
</span><a href="#local-6989586621680820851"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span id="local-6989586621680820843"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820843"><span class="hs-identifier hs-var">list_ty</span></a></span></span><span>
</span><span id="line-1831"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680820842"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680820842"><span class="hs-identifier hs-var">tc</span></a></span></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span id="local-6989586621680820841"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820841"><span class="hs-identifier hs-var">_k</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680820840"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820840"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680820839"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820839"><span class="hs-identifier hs-var">ts</span></a></span></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; Type -&gt; Maybe (TyCon, [Type])
Type -&gt; Maybe (TyCon, [Type])
</span><a href="GHC.Core.Type.html#splitTyConApp_maybe"><span class="hs-identifier hs-var">splitTyConApp_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820843"><span class="hs-identifier hs-var">list_ty</span></a></span><span>
</span><span id="line-1832"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">ASSERT</span><span class="hs-special">(</span><span> </span><span class="hs-identifier">tc</span><span> </span><span class="hs-special">`</span><span class="hs-identifier">hasKey</span><span class="hs-special">`</span><span> </span><span class="hs-identifier">consDataConKey</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-1833"></span><span>        </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820840"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; [Type] -&gt; [Type]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">Type -&gt; [Type]
</span><a href="#local-6989586621680820851"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820839"><span class="hs-identifier hs-var">ts</span></a></span><span>
</span><span id="line-1834"></span><span>
</span><span id="line-1835"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680820836"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680820836"><span class="hs-identifier hs-var">tc</span></a></span></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span id="local-6989586621680820835"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820835"><span class="hs-identifier hs-var">_k</span></a></span></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; Type -&gt; Maybe (TyCon, [Type])
Type -&gt; Maybe (TyCon, [Type])
</span><a href="GHC.Core.Type.html#splitTyConApp_maybe"><span class="hs-identifier hs-var">splitTyConApp_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820843"><span class="hs-identifier hs-var">list_ty</span></a></span><span>
</span><span id="line-1836"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">ASSERT</span><span class="hs-special">(</span><span> </span><span class="hs-identifier">tc</span><span> </span><span class="hs-special">`</span><span class="hs-identifier">hasKey</span><span class="hs-special">`</span><span> </span><span class="hs-identifier">nilDataConKey</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-1837"></span><span>        </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1838"></span><span>
</span><span id="line-1839"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-1840"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Char] -&gt; SDoc -&gt; [Type]
forall a. HasCallStack =&gt; [Char] -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;extractPromotedList&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680820852"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1841"></span><span>
</span><span id="line-1842"></span><span>
</span><span id="line-1843"></span><span>
</span><span id="line-1844"></span><span class="hs-comment">---------------------------------------</span><span>
</span><span id="line-1845"></span><span class="hs-comment">-- ghc-bignum</span><span>
</span><span id="line-1846"></span><span class="hs-comment">---------------------------------------</span><span>
</span><span id="line-1847"></span><span>
</span><span id="line-1848"></span><span class="annot"><a href="GHC.Builtin.Types.html#integerTyConName"><span class="hs-identifier hs-type">integerTyConName</span></a></span><span>
</span><span id="line-1849"></span><span>   </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#integerISDataConName"><span class="hs-identifier hs-type">integerISDataConName</span></a></span><span>
</span><span id="line-1850"></span><span>   </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#integerIPDataConName"><span class="hs-identifier hs-type">integerIPDataConName</span></a></span><span>
</span><span id="line-1851"></span><span>   </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#integerINDataConName"><span class="hs-identifier hs-type">integerINDataConName</span></a></span><span>
</span><span id="line-1852"></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-1853"></span><span id="integerTyConName"><span class="annot"><span class="annottext">integerTyConName :: Name
</span><a href="GHC.Builtin.Types.html#integerTyConName"><span class="hs-identifier hs-var hs-var">integerTyConName</span></a></span></span><span>
</span><span id="line-1854"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>
</span><span id="line-1855"></span><span>      </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span>
</span><span id="line-1856"></span><span>      </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_NUM_INTEGER"><span class="hs-identifier hs-var">gHC_NUM_INTEGER</span></a></span><span>
</span><span id="line-1857"></span><span>      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Integer&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-1858"></span><span>      </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#integerTyConKey"><span class="hs-identifier hs-var">integerTyConKey</span></a></span><span>
</span><span id="line-1859"></span><span>      </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#integerTyCon"><span class="hs-identifier hs-var">integerTyCon</span></a></span><span>
</span><span id="line-1860"></span><span id="integerISDataConName"><span class="annot"><span class="annottext">integerISDataConName :: Name
</span><a href="GHC.Builtin.Types.html#integerISDataConName"><span class="hs-identifier hs-var hs-var">integerISDataConName</span></a></span></span><span>
</span><span id="line-1861"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span>
</span><span id="line-1862"></span><span>      </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span>
</span><span id="line-1863"></span><span>      </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_NUM_INTEGER"><span class="hs-identifier hs-var">gHC_NUM_INTEGER</span></a></span><span>
</span><span id="line-1864"></span><span>      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;IS&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-1865"></span><span>      </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#integerISDataConKey"><span class="hs-identifier hs-var">integerISDataConKey</span></a></span><span>
</span><span id="line-1866"></span><span>      </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#integerISDataCon"><span class="hs-identifier hs-var">integerISDataCon</span></a></span><span>
</span><span id="line-1867"></span><span id="integerIPDataConName"><span class="annot"><span class="annottext">integerIPDataConName :: Name
</span><a href="GHC.Builtin.Types.html#integerIPDataConName"><span class="hs-identifier hs-var hs-var">integerIPDataConName</span></a></span></span><span>
</span><span id="line-1868"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span>
</span><span id="line-1869"></span><span>      </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span>
</span><span id="line-1870"></span><span>      </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_NUM_INTEGER"><span class="hs-identifier hs-var">gHC_NUM_INTEGER</span></a></span><span>
</span><span id="line-1871"></span><span>      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;IP&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-1872"></span><span>      </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#integerIPDataConKey"><span class="hs-identifier hs-var">integerIPDataConKey</span></a></span><span>
</span><span id="line-1873"></span><span>      </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#integerIPDataCon"><span class="hs-identifier hs-var">integerIPDataCon</span></a></span><span>
</span><span id="line-1874"></span><span id="integerINDataConName"><span class="annot"><span class="annottext">integerINDataConName :: Name
</span><a href="GHC.Builtin.Types.html#integerINDataConName"><span class="hs-identifier hs-var hs-var">integerINDataConName</span></a></span></span><span>
</span><span id="line-1875"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span>
</span><span id="line-1876"></span><span>      </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span>
</span><span id="line-1877"></span><span>      </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_NUM_INTEGER"><span class="hs-identifier hs-var">gHC_NUM_INTEGER</span></a></span><span>
</span><span id="line-1878"></span><span>      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;IN&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-1879"></span><span>      </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#integerINDataConKey"><span class="hs-identifier hs-var">integerINDataConKey</span></a></span><span>
</span><span id="line-1880"></span><span>      </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#integerINDataCon"><span class="hs-identifier hs-var">integerINDataCon</span></a></span><span>
</span><span id="line-1881"></span><span>
</span><span id="line-1882"></span><span class="annot"><a href="GHC.Builtin.Types.html#integerTy"><span class="hs-identifier hs-type">integerTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1883"></span><span id="integerTy"><span class="annot"><span class="annottext">integerTy :: Type
</span><a href="GHC.Builtin.Types.html#integerTy"><span class="hs-identifier hs-var hs-var">integerTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#integerTyCon"><span class="hs-identifier hs-var">integerTyCon</span></a></span><span>
</span><span id="line-1884"></span><span>
</span><span id="line-1885"></span><span class="annot"><a href="GHC.Builtin.Types.html#integerTyCon"><span class="hs-identifier hs-type">integerTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1886"></span><span id="integerTyCon"><span class="annot"><span class="annottext">integerTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#integerTyCon"><span class="hs-identifier hs-var hs-var">integerTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#integerTyConName"><span class="hs-identifier hs-var">integerTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1887"></span><span>                  </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#integerISDataCon"><span class="hs-identifier hs-var">integerISDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#integerIPDataCon"><span class="hs-identifier hs-var">integerIPDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#integerINDataCon"><span class="hs-identifier hs-var">integerINDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1888"></span><span>
</span><span id="line-1889"></span><span class="annot"><a href="GHC.Builtin.Types.html#integerISDataCon"><span class="hs-identifier hs-type">integerISDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1890"></span><span id="integerISDataCon"><span class="annot"><span class="annottext">integerISDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#integerISDataCon"><span class="hs-identifier hs-var hs-var">integerISDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#integerISDataConName"><span class="hs-identifier hs-var">integerISDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#intPrimTy"><span class="hs-identifier hs-var">intPrimTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#integerTyCon"><span class="hs-identifier hs-var">integerTyCon</span></a></span><span>
</span><span id="line-1891"></span><span>
</span><span id="line-1892"></span><span class="annot"><a href="GHC.Builtin.Types.html#integerIPDataCon"><span class="hs-identifier hs-type">integerIPDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1893"></span><span id="integerIPDataCon"><span class="annot"><span class="annottext">integerIPDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#integerIPDataCon"><span class="hs-identifier hs-var hs-var">integerIPDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#integerIPDataConName"><span class="hs-identifier hs-var">integerIPDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTy"><span class="hs-identifier hs-var">byteArrayPrimTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#integerTyCon"><span class="hs-identifier hs-var">integerTyCon</span></a></span><span>
</span><span id="line-1894"></span><span>
</span><span id="line-1895"></span><span class="annot"><a href="GHC.Builtin.Types.html#integerINDataCon"><span class="hs-identifier hs-type">integerINDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1896"></span><span id="integerINDataCon"><span class="annot"><span class="annottext">integerINDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#integerINDataCon"><span class="hs-identifier hs-var hs-var">integerINDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#integerINDataConName"><span class="hs-identifier hs-var">integerINDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTy"><span class="hs-identifier hs-var">byteArrayPrimTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#integerTyCon"><span class="hs-identifier hs-var">integerTyCon</span></a></span><span>
</span><span id="line-1897"></span><span>
</span><span id="line-1898"></span><span class="annot"><a href="GHC.Builtin.Types.html#naturalTyConName"><span class="hs-identifier hs-type">naturalTyConName</span></a></span><span>
</span><span id="line-1899"></span><span>   </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#naturalNSDataConName"><span class="hs-identifier hs-type">naturalNSDataConName</span></a></span><span>
</span><span id="line-1900"></span><span>   </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#naturalNBDataConName"><span class="hs-identifier hs-type">naturalNBDataConName</span></a></span><span>
</span><span id="line-1901"></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-1902"></span><span id="naturalTyConName"><span class="annot"><span class="annottext">naturalTyConName :: Name
</span><a href="GHC.Builtin.Types.html#naturalTyConName"><span class="hs-identifier hs-var hs-var">naturalTyConName</span></a></span></span><span>
</span><span id="line-1903"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; TyCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInTyConName"><span class="hs-identifier hs-var">mkWiredInTyConName</span></a></span><span>
</span><span id="line-1904"></span><span>      </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span>
</span><span id="line-1905"></span><span>      </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_NUM_NATURAL"><span class="hs-identifier hs-var">gHC_NUM_NATURAL</span></a></span><span>
</span><span id="line-1906"></span><span>      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;Natural&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-1907"></span><span>      </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#naturalTyConKey"><span class="hs-identifier hs-var">naturalTyConKey</span></a></span><span>
</span><span id="line-1908"></span><span>      </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#naturalTyCon"><span class="hs-identifier hs-var">naturalTyCon</span></a></span><span>
</span><span id="line-1909"></span><span id="naturalNSDataConName"><span class="annot"><span class="annottext">naturalNSDataConName :: Name
</span><a href="GHC.Builtin.Types.html#naturalNSDataConName"><span class="hs-identifier hs-var hs-var">naturalNSDataConName</span></a></span></span><span>
</span><span id="line-1910"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span>
</span><span id="line-1911"></span><span>      </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span>
</span><span id="line-1912"></span><span>      </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_NUM_NATURAL"><span class="hs-identifier hs-var">gHC_NUM_NATURAL</span></a></span><span>
</span><span id="line-1913"></span><span>      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;NS&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-1914"></span><span>      </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#naturalNSDataConKey"><span class="hs-identifier hs-var">naturalNSDataConKey</span></a></span><span>
</span><span id="line-1915"></span><span>      </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#naturalNSDataCon"><span class="hs-identifier hs-var">naturalNSDataCon</span></a></span><span>
</span><span id="line-1916"></span><span id="naturalNBDataConName"><span class="annot"><span class="annottext">naturalNBDataConName :: Name
</span><a href="GHC.Builtin.Types.html#naturalNBDataConName"><span class="hs-identifier hs-var hs-var">naturalNBDataConName</span></a></span></span><span>
</span><span id="line-1917"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuiltInSyntax -&gt; Module -&gt; FastString -&gt; Unique -&gt; DataCon -&gt; Name
</span><a href="GHC.Builtin.Types.html#mkWiredInDataConName"><span class="hs-identifier hs-var">mkWiredInDataConName</span></a></span><span>
</span><span id="line-1918"></span><span>      </span><span class="annot"><span class="annottext">BuiltInSyntax
</span><a href="GHC.Types.Name.html#UserSyntax"><span class="hs-identifier hs-var">UserSyntax</span></a></span><span>
</span><span id="line-1919"></span><span>      </span><span class="annot"><span class="annottext">Module
</span><a href="GHC.Builtin.Names.html#gHC_NUM_NATURAL"><span class="hs-identifier hs-var">gHC_NUM_NATURAL</span></a></span><span>
</span><span id="line-1920"></span><span>      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Char] -&gt; FastString
</span><a href="GHC.Data.FastString.html#fsLit"><span class="hs-identifier hs-var">fsLit</span></a></span><span> </span><span class="annot"><span class="annottext">[Char]
</span><span class="hs-string">&quot;NB&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-1921"></span><span>      </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#naturalNBDataConKey"><span class="hs-identifier hs-var">naturalNBDataConKey</span></a></span><span>
</span><span id="line-1922"></span><span>      </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#naturalNBDataCon"><span class="hs-identifier hs-var">naturalNBDataCon</span></a></span><span>
</span><span id="line-1923"></span><span>
</span><span id="line-1924"></span><span class="annot"><a href="GHC.Builtin.Types.html#naturalTy"><span class="hs-identifier hs-type">naturalTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-1925"></span><span id="naturalTy"><span class="annot"><span class="annottext">naturalTy :: Type
</span><a href="GHC.Builtin.Types.html#naturalTy"><span class="hs-identifier hs-var hs-var">naturalTy</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#mkTyConTy"><span class="hs-identifier hs-var">mkTyConTy</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#naturalTyCon"><span class="hs-identifier hs-var">naturalTyCon</span></a></span><span>
</span><span id="line-1926"></span><span>
</span><span id="line-1927"></span><span class="annot"><a href="GHC.Builtin.Types.html#naturalTyCon"><span class="hs-identifier hs-type">naturalTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-1928"></span><span id="naturalTyCon"><span class="annot"><span class="annottext">naturalTyCon :: TyCon
</span><a href="GHC.Builtin.Types.html#naturalTyCon"><span class="hs-identifier hs-var hs-var">naturalTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe CType -&gt; [TyVar] -&gt; [DataCon] -&gt; TyCon
</span><a href="GHC.Builtin.Types.html#pcTyCon"><span class="hs-identifier hs-var">pcTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#naturalTyConName"><span class="hs-identifier hs-var">naturalTyConName</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CType
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1929"></span><span>                  </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#naturalNSDataCon"><span class="hs-identifier hs-var">naturalNSDataCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="GHC.Builtin.Types.html#naturalNBDataCon"><span class="hs-identifier hs-var">naturalNBDataCon</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1930"></span><span>
</span><span id="line-1931"></span><span class="annot"><a href="GHC.Builtin.Types.html#naturalNSDataCon"><span class="hs-identifier hs-type">naturalNSDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1932"></span><span id="naturalNSDataCon"><span class="annot"><span class="annottext">naturalNSDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#naturalNSDataCon"><span class="hs-identifier hs-var hs-var">naturalNSDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#naturalNSDataConName"><span class="hs-identifier hs-var">naturalNSDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#wordPrimTy"><span class="hs-identifier hs-var">wordPrimTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#naturalTyCon"><span class="hs-identifier hs-var">naturalTyCon</span></a></span><span>
</span><span id="line-1933"></span><span>
</span><span id="line-1934"></span><span class="annot"><a href="GHC.Builtin.Types.html#naturalNBDataCon"><span class="hs-identifier hs-type">naturalNBDataCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-1935"></span><span id="naturalNBDataCon"><span class="annot"><span class="annottext">naturalNBDataCon :: DataCon
</span><a href="GHC.Builtin.Types.html#naturalNBDataCon"><span class="hs-identifier hs-var hs-var">naturalNBDataCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; [TyVar] -&gt; [Type] -&gt; TyCon -&gt; DataCon
</span><a href="GHC.Builtin.Types.html#pcDataCon"><span class="hs-identifier hs-var">pcDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Types.html#naturalNBDataConName"><span class="hs-identifier hs-var">naturalNBDataConName</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Type
</span><a href="GHC.Builtin.Types.Prim.html#byteArrayPrimTy"><span class="hs-identifier hs-var">byteArrayPrimTy</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#naturalTyCon"><span class="hs-identifier hs-var">naturalTyCon</span></a></span><span>
</span><span id="line-1936"></span></pre></body></html>